是否可以设置count
而不是触发$watch
回调?
$scope.count=1;
$scope.$watch('count',function(){...});
感谢。
答案 0 :(得分:9)
您可以使用setTimeout等待Angular的摘要周期完成,然后运行您的代码:
setTimeout(function(){
$scope.count = 1;
},0)
这样,角度代码完成运行,检查更改,然后设置属性而不涉及Angular。
答案 1 :(得分:4)
不,但您可以在回调中添加控制变量逻辑
$scope.$watch('count',function(){
if ($scope.bypass) return;
//else ....
});
答案 2 :(得分:3)
有点儿。您可以使用$ watch监听器功能。所以不要使用:
$scope.$watch('count',function(){...});
您将使用:
scope.$watch(
function() {
// return the condition you do want evaluated. Whenever this return value changes
// from the previous $digest cycle the change handler function below will be called.
// The return value will be passed in as `newValue` (and the previous as `oldValue`)
// in the change handler.
},
function(newValue,oldValue){...});
编辑:由于看起来你正在尝试观察2个不同的变量,另一个选项可能是使用watchCollection
,如果有任何变化将会触发(因此你可以为两者加上一个统一处理程序):
$scope.$watchCollection(['count','otherCount'], function(newValues, oldValues) { ...});