模型更新检测

时间:2013-06-28 19:40:43

标签: angularjs

我尝试基于AngularJS的$ watch函数为我的表单实现自动保存功能。我初始化观看如下所述:

var unbindWatcher = $scope.$watch('selectedElement', function(newValue, oldValue) {
    (...)
});

使用$ resource对象及其查询方法加载所选元素。然后使用列表中的一个元素设置selectedElement。 selectedElement的字段使用ng-model属性与表单元素链接。

问题是$ watch方法中指定的回调在任何更新完成之前被调用一次。

这是$ watch方法的正常行为吗?如何在实际更新selectedElement时捕获它?

感谢您的帮助。 亨利

1 个答案:

答案 0 :(得分:2)

是预期的行为在使用作用域注册观察者之后,将异步调用侦听器fn(通过$ evalAsync)来初始化观察者。您可以将以下行添加到功能

var unbindWatcher = $scope.$watch('selectedElement', function(newValue, oldValue) {
    if(newvalue===oldvalue) return;
});