2013-06-28 2 views
0

Я пытаюсь реализовать функцию автосохранения для своих форм на основе функции $ watch от AngularJS. Я инициализировал просмотр, как описано ниже:Обнаружение обновления модели

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

Выбранный элемент загружается с использованием объекта $ resource и его метода запросов. Выбранный элемент устанавливается затем с использованием одного элемента списка. Поля выбранного элемента связаны с элементами формы, используя атрибут ng-model.

Проблема заключается в том, что обратный вызов, указанный в методе $ watch, вызывается один раз перед выполнением любого обновления.

Это обычное поведение метода $ watch? Как поймать, когда выбранный элемент фактически обновлен?

Благодарим за помощь. Thierry

ответ

2

Да, это ожидаемое поведение После того, как наблюдатель зарегистрирован в области видимости, слушатель fn вызывается асинхронно (через $ evalAsync) для инициализации наблюдателя. Вы можете добавить нижнюю строку к функции

var unbindWatcher = $scope.$watch('selectedElement', function(newValue, oldValue) { 
    if(newvalue===oldvalue) return; 
}); 
Смежные вопросы