我的监听器功能取决于几个值,我需要在每个值上加上$ 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已经这样做了吗?
答案 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);