我正在观看带有$ watchCollection的对象。在回调中,我想知道对象的哪些属性发生了变化,但我遇到的问题是回调新旧值都是相同的对象。有没有办法让我观察一个对象并找到对象的哪个属性被更改。
http://jsfiddle.net/SQuVy/325/
angular.module('watchApp', []).controller('watchCtrl', function($scope) {
$scope.count = 0;
$scope.b = {
value1: 1,
value2: 2,
value3: 3
};
$scope.$watchCollection('b', function(newvalue,oldvalue) {
console.log(newvalue);// both new and old are same objects
console.log(oldvalue);
}, true);
});
感谢。
答案 0 :(得分:-1)
每次更新对$watch
媒体资源的引用时,您的$scope
都会被解雇。这并不一定意味着参考指向的对象已经改变,只是参考本身。
观看收藏品也不例外。要避免此问题,请尝试以下代码:
$scope.$watchCollection('b', function(val, prev){
if(val !== prev){
// do whatever you need here
}
});