是否有一种方法可以使用$watch订阅多个对象上的事件
E.g.
$scope.$watch('item1, item2', function () { });
是否有一种方法可以使用$watch订阅多个对象上的事件
E.g.
$scope.$watch('item1, item2', function () { });
当前回答
如何:
scope.$watch(function() {
return {
a: thing-one,
b: thing-two,
c: red-fish,
d: blue-fish
};
}, listener...);
其他回答
如何:
scope.$watch(function() {
return {
a: thing-one,
b: thing-two,
c: red-fish,
d: blue-fish
};
}, listener...);
一个稍微安全一点的组合值的解决方案可能是使用下面的$watch函数:
function() { return angular.toJson([item1, item2]) }
or
$scope.$watch(
function() {
return angular.toJson([item1, item2]);
},
function() {
// Stuff to do after either value changes
});
为什么不简单地把它包在forEach里呢?
angular.forEach(['a', 'b', 'c'], function (key) {
scope.$watch(key, function (v) {
changed();
});
});
这与为组合值提供函数的开销大致相同,实际上不必担心值的组合。
$scope.$watch('age + name', function () {
//called when name or age changed
});
在这里,当年龄和名称值都被改变时,函数将被调用。
$watch的第一个参数也可以是一个函数。
$scope.$watch(function watchBothItems() {
return itemsCombinedValue();
}, function whenItemsChange() {
//stuff
});
如果你的两个组合值很简单,第一个参数通常只是一个角度表达式。例如,firstName和lastName:
$scope.$watch('firstName + lastName', function() {
//stuff
});