2014-09-10 3 views
1

Что происходит внутри AngularJS, когда событие запускается с помощью системы угловых внутренних событий?События AngularJS против часов

С точки зрения производительности, должен ли я использовать часы или события для обновления деталей в своем приложении?

+0

Возможный дубликат: http://stackoverflow.com/questions/19616520/what-is-cheaper-performance-wise-broadcast-or-watch – Sprottenwels

ответ

3

При запуске события JS его обычно обрабатывают так же, как обрабатываются все события JS - в этом нет ничего особенного или уникального.

Однако угловой окутают обработчик внутри от $ применяется блок так, что после того, как он выполняет функцию, она может вызвать цикл дайджеста:

$scope.$apply(function(){ 
    $element.on('click',function(e){ 
      ... 
     }); 
}) 

дайджест цикл перебирает все переменная области видимости, сравнивает каждый из которых имеет предыдущее значение, чтобы определить, изменилось ли что-либо, и если оно есть, то их соответствующие $ watch-обработчики вызываются для обновления представления.

Поскольку вы используете угловые настройки, создайте выражения $ watch, когда хотите обнаружить, что модель в вашей области изменилась, а затем выполните любые манипуляции с DOM внутри вашего обработчика $ watch. Если вас беспокоит производительность, убедитесь, что функция $ watch оптимизирована (т. Е. Избегайте полного jquery, избегайте дорогостоящих селекторов запросов, минимизируйте манипуляции с DOM и т. Д.)

Чтобы ответить на ваш вопрос, вы должны использовать $ watch для мониторинга изменений ваши модели и функции $ watch для обновления вашего представления.

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