我有一个监测函数:
scope.$watch('target', function(){
scope.hasUnsavedChanges = true;
}, true);
然后我改变了一些值:
functiion change(target){
scope.hasUnsavedChanges = false;
scope.target.Xxx = '';
console.log('scope.hasUnsavedChanges = ' + scope.hasUnsavedChanges);
}
它的输出结果为false。那么watch函数是何时执行的呢?在上述代码中,当scope.hasUnsavedChanges变为true之后,如何运行一些代码呢?
$watch
在digest期间触发,因此这绝不是紧随观察表达式结果差异之后立即发生的情况。换句话说,它不是更改对象导致初始摘要(尽管至少会跟随一个)。 - Marc Klinechange
中你正在改变target
的值,那么就在更改完成后执行逻辑即可。 - Marc Klinetarget
,它就会立即更改。仅仅因为$watch需要一点时间才能意识到这一点,并不意味着它没有发生。对吗? - Jerrad