我从我的服务广播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);
$watch
参数被反转它是当前值和旧值。
使用:
$scope.$watch('canUndo', function(newValue, oldValue) {
$scope.canUndo = newValue;
}, true);
另外,如果canUndo
是简单值,则不需要将$watch
的第三个参数设置为true(它用于监视数组和嵌套结构)。