angularjs:$观察两个变量并做一些事情,如果只有一个变化

时间:2014-02-10 14:18:00

标签: javascript angularjs

我有一种情况,我想监视一个特定的变量。

$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随机执行的顺序!)

3 个答案:

答案 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
});