Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

Commit 6c1d790

Browse files
committed
Use set for arrays and update for Objects
1 parent 7d9f7f3 commit 6c1d790

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

angularFire.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,23 +67,26 @@ AngularFire.prototype = {
6767
if (remote && check.call(local) == check.call(remote)) {
6868
if (check.call(local) == "[object Array]") {
6969
merged = local.concat(remote);
70+
if (!angular.equals(merged, remote)) {
71+
self._fRef.ref().set(merged);
72+
remote = merged;
73+
}
7074
} else if (check.call(local) == "[object Object]") {
7175
merged = local;
7276
for (var key in remote) {
7377
merged[key] = remote[key];
7478
}
79+
self._fRef.ref().update(merged);
80+
remote = merged;
7581
}
7682
}
7783
// If remote value is null, overwrite remote value with local
7884
if (remote === null) {
79-
merged = local;
85+
self._fRef.ref().set(local);
86+
remote = local;
8087
}
8188
// If types don't match or the type is primitive, just overwrite the
8289
// local value with the remote value.
83-
if (merged) {
84-
self._fRef.ref().update(merged);
85-
return;
86-
}
8790
}
8891

8992
var resolve = false;
@@ -155,7 +158,12 @@ AngularFire.prototype = {
155158
if (angular.equals(val, self._remoteValue)) {
156159
return;
157160
}
158-
self._fRef.ref().update(val);
161+
var check = Object.prototype.toString;
162+
if (check.call(val) == "[object Object]") {
163+
self._fRef.ref().update(val);
164+
} else {
165+
self._fRef.ref().set(val);
166+
}
159167
}, true);
160168
// Also watch for scope destruction and unregister.
161169
$scope.$on("$destroy", function() {

angularfire.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)