Поскольку все часы оцениваются на каждом $ digest, поддержание их низкого уровня является хорошей перфективной практикой. Чтобы перефразировать заголовок вопроса, существует ли штраф за объявление переменной или метода в области $ scope внутри контроллера, если на них не ссылаются связанные шаблоны (если есть штраф, можно объявить их как локальную переменную на контроллере объект).
ответ
Когда вы размещаете что-то на $scope
, его можно наблюдать. Вы можете $watch
что-нибудь на этом уровне отлично, даже если оно не на шаблоне.
Есть ли штраф за исполнение? AngularJS обычно сравнивает ссылки при просмотре объектов и сравнивает только watched objects, а не все в области. Поэтому, если вы не делаете deep compare на очень большом объекте или массиве, который вы смотрите, это не займет заметного времени.
Для тестирования производительности и наблюдения за тем, что ваши изменения замедляют работу, вы можете использовать AngularJS Batarang.
Чтобы добавить к этому, вы можете смотреть вещи не в области видимости, возвращая их из функции, переданной в качестве первого аргумента в $ watch. –
- 1. AngularJS: смотреть свойства Сервис
- 2. AngularJS: $ scope. $ Смотреть два значения, которые зависят друг от друга
- 3. Поиск DLL, которые фактически используются, и те, на которые ссылаются
- 4. Поместите все свойства или только те свойства, которые я собираюсь обновить?
- 5. Angularjs $ scope. $ WatchCollection только свойства первого уровня
- 6. @ConfigurationProperties, ссылающиеся на свойства, которые сами ссылаются на другие свойства
- 7. AngularJS $ scope, не доступный в шаблоне
- 8. Scope не обновляется в другом шаблоне (AngularJS)
- 9. AngularJS Изменить Scope в директиве Шаблоне
- 10. AngularJS $ scope. $ Смотреть свойство ngМодель выбора ввода
- 11. Scala: все методы импортированного Trait или только те, которые используются?
- 12. jQuery - prop («checked») - все флажки или только те, которые «отмечены»
- 13. Смотреть все свойства реактивных данных в Vue.js
- 14. ссылаются на свойство ModelField в шаблоне
- 15. Показать все переменные $ scope в представлении - AngularJS
- 16. Делает .bind break $ scope в angularjs?
- 17. изолят Scope с $ смотреть
- 18. Жасмин AngularJS: Макет свойства $ scope?
- 19. MySQL перечисляет все строки в одной таблице, исключая те, которые уже ссылаются на другую таблицу.
- 20. AngularJS $ scope. $ Watch на свойства объекта
- 21. AngularJS $ scope. $ Смотреть свойства $ scope.foo, но отправлять старые значения на сервер до изменения
- 22. «Целенаправленная» глубоко смотреть в AngularJS
- 23. При расширении класса свойства копируются или ссылаются?
- 24. angularjs директива change scope значение свойства
- 25. ModelState: проверять только те свойства, которые находятся внутри формы
- 26. Hibernate JPA Template делает слияние обновлений объектов, на которые ссылаются
- 27. Обмен данными между контроллерами в угловом, смотреть или не смотреть?
- 28. $ смотреть объекты в JSON Angularjs
- 29. Просмотреть все таблицы, на которые ссылаются внешние ключи в SSMS
- 30. Получите все пространства имен, на которые ссылаются в консольном приложении.
Да, есть. Угловой триггер цикл $ digest каждый раз, когда что-либо в области изменяется (грязная/чистая проверка). Поэтому он должен перебирать каждую переменную в вашей области действия и проверять, не изменилось ли оно. –
Обратите внимание, что AngularJS не выполняет переваривание $, если что-то изменится, оно будет перевариваться в любое время, когда область применения $ apply'd. – Philipp
@SergiuParaschiv Это неправильно. ** Сначала **, дайджест происходит только тогда, когда он запускается (в основном по директивам/службам). ** Второй **, только зарегистрированные наблюдатели проверяются не всем объектом области. –