Мне интересно, как угловая.js внутри обнаруживает, что модель была изменена, и что является общим угловым рабочим процессом для обработки этих изменений. Я имею в виду, что на самом деле произошло на странице после того, как я сменил часть моего модуля.Как angular.js обнаружил, что модель была изменена
ответ
Это мое понимание. Поправьте меня, если я ошибаюсь. Это двухсторонний обмен информацией :)
Связывание данных не является волшебным, если вы знаете, как оно работает.
Для того чтобы любые переменные имели функции привязки данных, их необходимо зарегистрировать с использованием метода $ watch.
$scope.$watch('aVarModel', function(newValue, oldValue) {
//update the DOM with newValue
});
Все эти привязанные данные через $ watch будут проверяться всякий раз, когда $ scope вызывается $ digest. Обратите внимание, что Angular не проверяет все значения в области видимости, а вместо этого только те, которые регистрируются с использованием методов $ watch. Если модель не зарегистрирована с использованием наблюдателя, она не будет проверена. Он сравнивает старые значения и новые значения, чтобы проверить, не изменилось ли какое-либо из них. Если он изменится, он вызовет функцию слушателя (второй параметр метода наблюдателя).
Вы можете спросить, что вы не зарегистрировали какую-либо переменную в области видимости с помощью $ watch или call $ digest, чтобы проверить изменения, но происходит привязка данных. Зачем?
У AngularJS есть куча встроенных директив, которые фактически называет метод $ digest за ним и смотрят переменную, чтобы сделать нашу работу намного проще. Например:
<div ng-app ng-init="qty=1;cost=2">
<b>Invoice:</b>
<div>
Quantity: <input type="number" min="0" ng-model="qty">
</div>
<div>
Costs: <input type="number" min="0" ng-model="cost">
</div>
<div>
<b>Total:</b> {{qty * cost | currency}}
</div>
</div>
Встроенный в нг-модели директивы фактически регистрировать наблюдателей для Qty и стоимостных переменных и вызов $ объема $ переваривать каждый раз при изменении значения не мы его знаем.. Вы можете создавать настраиваемые директивы
Вспомните, что каждое выражение внутри {{}} также автоматически просматривается на этапе компиляции. Таким образом, он будет меняться, поскольку значение его изменяется в любом месте приложения.
так как угловой $ digest называется или изменен? – yozawiratama
- 1. Wicket: Уведомлять, была ли изменена модель страницы
- 2. события javascript/backbone, когда модель была изменена
- 3. Обновлено, что переменная-член была установлена / изменена
- 4. SVN говорит, что папка была изменена
- 5. «Коллекция была изменена ...» Проблема
- 6. InvalidOperationException: коллекция была изменена
- 7. System.InvalidOperationException: Коллекция была изменена
- 8. тест сломался, когда была изменена модель с интерфейсами к классам
- 9. Проверьте, была ли модель изменена или создана по событию before_save
- 10. Как узнать, была ли изменена модификация enyo.Model?
- 11. Как узнать, что системная дата была изменена (вручную или автоматически)?
- 12. Как можно узнать, что итерационная коллекция была изменена?
- 13. Как сообщить Eclipse, что конфигурация запуска была изменена?
- 14. Как убедиться, что база данных SQLite не была изменена?
- 15. Проверить, когда страница была изменена
- 16. Коллекция была изменена ошибка .NET2.0
- 17. InvalidOperationException: коллекция была изменена; Перечисление
- 18. Узнайте, когда была изменена дата
- 19. Как определить, была ли изменена веб-страница
- 20. Как узнать, где была изменена база данных
- 21. Как узнать, была ли форма изменена
- 22. Как узнать, когда последняя страница была изменена?
- 23. Как определить, была ли изменена база данных?
- 24. Как проверить git, если папка была изменена
- 25. Коллекция была изменена после того, как была зарегистрирована ошибка счетчика
- 26. Angular.JS нг-модель
- 27. Модель в Angular.js
- 28. jQuery Сообщение о том, что запись была изменена
- 29. Убедиться, что модель django была правильно сохранена
- 30. модель нагрузки ресурсы angular.js
Как [этот вопрос] (http://stackoverflow.com/q/12463902/893780) (один из ответов там указывает на [это объяснение] (http://docs.angularjs.org/guide/concepts #runtime)). – robertklep