AngularJS - Почему ng-change вызывается до обновления модели?

См. следующий plnkr: http://plnkr.co/edit/KZwIBX?p=preview

Первый стандартный выбор работает как ожидалось (по крайней мере, насколько я ожидал/ожидал), что означает, что ng-change вызывается после обновления модели. Но когда я создаю директиву с областью выделения, кажется, что ng-change вызывается до обновления моей модели. Очевидно, есть кое-что, что я недопонимаю.

Ситуация очень похожа на Область AngularJS обновлена ​​после изменения ng

Ответ 1

Проблема с примером в plnkr заключается в том, что вы передаете функцию изменения в область изоляции как привязку к родительской области с помощью change: '&'. Используя эту функцию, функция будет оцениваться как выражение в контексте родителя и будет оцениваться до изменения модели (если в качестве параметра нет привязки к модели)

Существует два способа изменить пример для работы:

  • вы можете определить свою изолированную область действия в директиве с изменением: '=' definition

  • вы можете использовать его как есть, но вызвать родительскую ссылку с параметром. Для второго примера здесь большое объяснение: http://www.thinkster.io/pick/oEo8ZAXv27/angularjs-isolate-scope