我尝试基于AngularJS的$ watch函数为我的表单实现自动保存功能。我初始化观看如下所述:
var unbindWatcher = $scope.$watch('selectedElement', function(newValue, oldValue) {
(...)
});
使用$ resource对象及其查询方法加载所选元素。然后使用列表中的一个元素设置selectedElement。 selectedElement的字段使用ng-model属性与表单元素链接。
问题是$ watch方法中指定的回调在任何更新完成之前被调用一次。
这是$ watch方法的正常行为吗?如何在实际更新selectedElement时捕获它?
感谢您的帮助。 亨利
答案 0 :(得分:2)
是预期的行为在使用作用域注册观察者之后,将异步调用侦听器fn(通过$ evalAsync)来初始化观察者。您可以将以下行添加到功能
var unbindWatcher = $scope.$watch('selectedElement', function(newValue, oldValue) {
if(newvalue===oldvalue) return;
});