私の意図は、スコープ内のモデルを見て、古い値と新しい値との間の違いを見つけることです。
しかし、私は古い値と新しい値が次のコードからすべて同じであることがわかりました。
app.controller('MyCtrl', function($scope, $timeout){
$scope.markers = {};
$scope.$watchCollection('markers', function(newValue, oldValue){
console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
});
$timeout(function() {
$scope.markers.foo = 1;
}, 500);
$timeout(function() {
$scope.markers.bar = 2;
}, 500);
});
出力:
being watched oldValue: Object {} newValue: Object {} script.js:6
being watched oldValue: Object {foo: 1} newValue: Object {foo: 1} script.js:6
being watched oldValue: Object {foo: 1, bar: 2} newValue: Object {foo: 1, bar: 2}
なぜ、なぜ、彼らは同じであり、それは意図的なのですか?ここ
コードは、http://plnkr.co/edit/rfMCF4x6CmVVT957DPSS?p=preview
ドキュメントが最新ではないか、それはバグですどちらか。 'newValue === oldValue'は' false'と言っているので、バグだと思う傾向があります。 –
これは既知のバグです:https://github.com/angular/angular.js/issues/2621 – KayakDave
$ watchCollectionは深い$ watchのショートカットであると仮定しました。そうではないようです。 – allenhwkim