我怎么能看多个值

时间:2015-02-03 20:40:34

标签: angularjs

我的监听器功能取决于几个值,我需要在每个值上加上$ watch。我想到了两种方法:

scope.$watch(function() { return [calcOneValue(), calcTheOtherValue()]; },
             function(a) { return theListener(a[0], a[1]); });

scope.$watch(calcOneValue,
             function(a) { return theListener(a, calcTheOtherValue()); });

scope.$watch(calcTheOtherValue,
             function(a) { return theListener(calcOneValue(), a); });

这些是正确的方法吗?我错过了更好的第三种选择吗?

我应该对此进行泛化,制作一个带范围的函数,一个值函数数组和一个多参数监听器函数吗?或者这种功能是否已经存在?或者$ watch已经这样做了吗?

2 个答案:

答案 0 :(得分:3)

当任何指定的表达式发生变化时,Angular有一种内置的方法来调用相同的函数 - $watchGroup

$scope.$watchGroup(["foo", "bar"], function(newValues, oldValues){
   // do something when either $scope.foo or $scope.bar changes
});

答案 1 :(得分:0)

您可以通过将调用的第三个值设置为true来深入观察数组,然后根据需要将所有值放在数组中。

 scope.$watch(myArray,function() { ...},true);