AngularJS:$ watch的执行顺序是什么?

时间:2014-05-31 01:11:56

标签: angularjs

我有一个手表功能:

scope.$watch('target', function(){
   scope.hasUnsavedChanges = true;
}, true);

然后我改变了一些值:

functiion change(target){
   scope.hasUnsavedChanges = false;
   scope.target.Xxx = '';
   console.log('scope.hasUnsavedChanges = ' + scope.hasUnsavedChanges); 
}

输出错误。那么当watch函数执行时? 以及如何在scope.hasUnsavedChanges在上面的代码中变为true后运行一些代码?

1 个答案:

答案 0 :(得分:2)

每次调用$watch函数后都会执行

$scope.$digests()个函数。

如果你想在hasUnsavedChanges之类的变量变为真后执行代码。将它变成一个函数并在那里执行所有代码就更有意义了:

scope.setUnsavedChanges = function(){  
  scope.hasUnsavedChanges = true; 
  //the rest of your code goes here
}

scope.$watch('target', function(){
   scope.setUnsavedChanges();
}, true);