如果我在$ broadcast上更改变量,$ watch是否应该工作

时间:2016-02-25 17:35:14

标签: angularjs angularjs-scope angularjs-service

我从我的服务广播了undo-redo-changed事件并在scope.on中处理,但$ watch funciton没有被调用。为什么?使用$ watch是否正确?当drawModule服务属性变量改变时,这些代码的用途改变按钮状态。 我的代码是

   $scope.$on('undo-redo-changed', function () {        
    $scope.canUndo = drawModule.canUndo() ? '' : 'disabled';
    $scope.canRedo = drawModule.canRedo() ? '' : 'disabled';        
}); 

$scope.$watch('canUndo', function(newValue, oldValue) {
    $scope.canUndo = newValue;
}, true);

$scope.$watch('canRedo', function (newValue, oldValue) {
    $scope.canRedo = newValue;
}, true);

1 个答案:

答案 0 :(得分:0)

{ "1456421340781": { "owner": "owner" } } 参数被反转,它是当前值和旧值。

使用:

$watch

如果$scope.$watch('canUndo', function(newValue, oldValue) { $scope.canUndo = newValue; }, true); 是简单值,您也不需要将canUndo的第三个参数设置为true(它用于监视数组和嵌套结构)。