Скажем, я внимательно наблюдаю за объектом в AngularJS (я использую AngularJS 1.4). Как я могу проверить, какое свойство объекта активировало $ watch?

0
jsmtslch 25 Дек 2016 в 21:42

2 ответа

$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
Adrian Zelada Torrez 25 Дек 2016 в 22:56
$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
});

Но если вы знаете, где именно меняются значения, вам следует использовать события angularjs, используя $ on, $ Broadcasr & $ emit.

0
Mohammed Ramadan 26 Дек 2016 в 00:41