$ watchCollection始终与新旧值具有相同的对象

时间:2014-05-14 17:24:02

标签: jquery angularjs

我正在观看带有$ 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);
});

感谢。

1 个答案:

答案 0 :(得分:-1)

每次更新对$watch媒体资源的引用时,您的$scope都会被解雇。这并不一定意味着参考指向的对象已经改变,只是参考本身。

观看收藏品也不例外。要避免此问题,请尝试以下代码:

$scope.$watchCollection('b', function(val, prev){
    if(val !== prev){
         // do whatever you need here
    }
});