Я использую $scope.$apply()
, чтобы обновить привязки для своих моделей, когда я получаю данные через веб-сайты в своих приложениях с угловыми углами, и это работает. Но что он на самом деле делает и почему его нужно вызвать для достижения обновления?
ответ
Из Angular docs:
$ применяются() используется для выполнения выражения в угловой из-за пределов угловой рамочным. (Например, из событий браузера DOM, setTimeout, XHR или сторонних библиотек). Поскольку мы вызываем в угловой каркас, нам необходимо выполнить правильный жизненный цикл обработки исключений, выполняющих часы.
документация также предоставляет псевдо-код этого:
function $apply(expr) {
try {
return $eval(expr);
} catch (e) {
$exceptionHandler(e);
} finally {
$root.$digest();
}
}
Короче говоря, $apply
вычисляет выражение и запускает цикл дайджеста, что делает Угловой выполнить все зарегистрированные часы слушатель и обновят любой просмотр привязки.
Наконец, вы сказали, что используете $apply
для обновления привязок для своих моделей, но это требуется только тогда, когда обновление происходит извне Углового. В большинстве случаев вам не нужно называть это вручную.
Проще говоря это:
- (Необязательно) Обрабатывает выражение вы передаете ему в качестве аргумента.
- Вызывает $ digest() на $ rootScope.
I also wrote a blog entry about what $apply, $digest and $watch do and how they work together
Я надеюсь, что помогает.
Если вы позвоните по телефону $apply
, то указанный код будет выполнен в angular-context
, который вы можете использовать, какие угловые обеспечивает.
Из link:
Угловые изменяет нормальный поток JavaScript, предоставляя свой собственный цикл обработки событий. Это разбивает JavaScript на классический и угловой контекст выполнения. Только операции, которые применяются в угловых контексте исполнения выиграют от Angular обработки исключений привязки данных,, собственность смотреть, и т.д. ...
Вы также можете использовать $ применять(), чтобы ввести Угольный контекст выполнения JavaScript. Имейте в виду, что в большинстве мест (контроллеры, службы) $ apply уже вызывается директивой, обрабатывающей событие. Явный вызов $ apply необходим только при реализации пользовательских обратных вызовов событий или при работе с обратными вызовами сторонних библиотек.
- 1. Что такое const & do?
- 2. Что такое runtime.Gosched do?
- 3. Что такое $ variable?: [] Do?
- 4. Что такое `RepositoryMock.Verify` do
- 5. что такое: operator() do?
- 6. AngularJS - Как увидеть, что запускает $ scope. $ Apply()
- 7. Что такое функция .apply jQuery?
- 8. AngularJS $ scope. $ Apply() Дилемма
- 9. Угловой тест $ scope. $ Apply
- 10. AngularJS $ apply inside scope
- 11. Socket.io и $ scope. $ Apply()
- 12. $ scope. $ Apply return error
- 13. $ scope. $ Apply замедляет производительность
- 14. Угловая $ scope. $ Digest vs $ scope. $ Apply
- 15. $ scope array и $ scope. $ Apply in angularjs
- 16. Что такое Request.Params ["key"] do?
- 17. Что такое $ scope - шаблон шаблона?
- 18. Что такое scope в IdentityServer
- 19. Всегда ли использовать $ scope. $ Apply?
- 20. Когда безопасно использовать $ scope. $ Apply()?
- 21. $ scope. $ Apply() не вызывающая функция
- 22. AngularJS using $ apply without $ scope
- 23. Cross apply scope не отображается?
- 24. Обновить $ scope while in $ apply
- 25. Зачем мне делать $ scope. $ Apply()?
- 26. угловой 2.0 эквивалент $ scope. $ Apply
- 27. $ evalAsync делает $ scope. $ Apply ненужным?
- 28. Что такое функция apply в Scala?
- 29. Что такое pf apply in c?
- 30. Передача аргументов функции в $ scope. $ Apply?
Это может помочь: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html –