2013-09-10 5 views
4

Я использую $scope.$apply(), чтобы обновить привязки для своих моделей, когда я получаю данные через веб-сайты в своих приложениях с угловыми углами, и это работает. Но что он на самом деле делает и почему его нужно вызвать для достижения обновления?

+0

Это может помочь: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html –

ответ

1

Из Angular docs:

$ применяются() используется для выполнения выражения в угловой из-за пределов угловой рамочным. (Например, из событий браузера DOM, setTimeout, XHR или сторонних библиотек). Поскольку мы вызываем в угловой каркас, нам необходимо выполнить правильный жизненный цикл обработки исключений, выполняющих часы.

документация также предоставляет псевдо-код этого:

function $apply(expr) { 
    try { 
    return $eval(expr); 
    } catch (e) { 
    $exceptionHandler(e); 
    } finally { 
    $root.$digest(); 
    } 
} 

Короче говоря, $apply вычисляет выражение и запускает цикл дайджеста, что делает Угловой выполнить все зарегистрированные часы слушатель и обновят любой просмотр привязки.

Наконец, вы сказали, что используете $apply для обновления привязок для своих моделей, но это требуется только тогда, когда обновление происходит извне Углового. В большинстве случаев вам не нужно называть это вручную.

3

Если вы позвоните по телефону $apply, то указанный код будет выполнен в angular-context, который вы можете использовать, какие угловые обеспечивает.

Из link:

Угловые изменяет нормальный поток JavaScript, предоставляя свой собственный цикл обработки событий. Это разбивает JavaScript на классический и угловой контекст выполнения. Только операции, которые применяются в угловых контексте исполнения выиграют от Angular обработки исключений привязки данных,, собственность смотреть, и т.д. ...

enter image description here

Вы также можете использовать $ применять(), чтобы ввести Угольный контекст выполнения JavaScript. Имейте в виду, что в большинстве мест (контроллеры, службы) $ apply уже вызывается директивой, обрабатывающей событие. Явный вызов $ apply необходим только при реализации пользовательских обратных вызовов событий или при работе с обратными вызовами сторонних библиотек.

Смежные вопросы