我有一种情况,我想监视一个特定的变量。
$scope.$watch('action', function() { /* do something */ }
但是,如果$scope.id
未发生变化,我只想做一些事情(如果$scope.action
更改,则$scope.id
也可能发生变化。)
我能想到的唯一解决方案是
$scope.$watch('action', function() {
if(idHasChanhed === false){
/* do something */
}
idHasChanged = false;
});
$scope.$watch('id', function() { idHasChanged = true }
但是,我想知道角度是否有比这更好的解决方案,我不知道这个解决方案是否总是有效(是$ watch随机执行的顺序!)
答案 0 :(得分:4)
我的解决方案:
$scope.$watch('[action,id]', function() {
// called when action or id changed
});
信息:字符串连接action + id
将失败。
答案 1 :(得分:0)
var action,id; // variables you need to watch
$scope.$watch('action + id', function() {
// actions
});
答案 2 :(得分:0)
$ watchGroup 此功能在Angular1.3中引入。这与$ watch()函数的工作方式相同,只是第一个参数是要监视的表达式数组。
使用$watchGroup
$scope.$watchGroup(['action', 'id'], function(newVal, oldVal) {
//write your code here
});