在深度观看的情况下如何检查$ watch触发器

时间:2016-12-25 18:42:56

标签: angularjs

说我正在深入观察AngularJS中的一个对象(我正在使用AngularJS 1.4)。如何检查对象的哪个属性触发$ watch?

2 个答案:

答案 0 :(得分:1)

$scope.$watch('object',function(newVal,oldVal){
   if(newVal!=oldVal){
     if(Object.keys(newVal).length==Object.keys(oldVal).length){
       $scope.keyChanged=comparteValue(newVal,oldVal);
     }
   }
},true)

function comparteValue(object1,object2){
  var keyChange=null;
  angular.forEach(object1,function(val,index){
     if(val!=object2[index]){
       keyChange=index;
     }
  });
 return keyChange;
};

答案 1 :(得分:0)

$scope.simpleObject = { key1: 'someValue', key2:{subKey1:'test'}};

$scope.$watch('simpleObject.key1', function(newValue, OldValue){
// code here
});

$scope.$watch('simpleObject.key2.subKey1', function(newValue, OldValue){
// code here
});

但是如果你知道值的确切位置,那么你应该使用$ on,$ broadcasr& $发射