2013-06-28 119 views
0

我尝试基于AngularJS的$ watch函数为我的窗体实现自动保存功能。我初始化了如下所述的观察:模型更新检测

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

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

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

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

感谢您的帮助。 Thierry

回答

2

是的,它是预期的行为监视器fn被异步调用(通过$ evalAsync)来初始化监视器。您可以在下面添加功能

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