2013-06-28 86 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; 
});