AngularJSналаштовуємо подію ініціалізації

Якщо ви вже знаєте, що таке AngularJS і користуєтеся ним тривалий час, можливо перед вами вже стояло завдання виконання деяких дій відразу після ініціалізації програми. І після прочитання документації ви виявляєте, що такого способу "з коробки" немає) Звичайно, багато хто з вас згадає про метод run() усередині кожного модуля. Однак я відповім вам, що цей метод спрацьовує ДО ініціалізації програми. Точніше після завантаження інжектором всіх модулів, але до виконання. Це легко перевірити.

Наведений вище код виведе в консоль:

І все ж є спосіб сповістити додаток про ініціалізацію. У цьому допоможе метод angular.bootstrap. Цей метод дозволяє прикріплювати модуль до елемента DOM без використання директиви ng-app. Після того, як ми прикріпимо модуль і в ньому відпрацюють усі елементи, ми можемо отримати посилання на $rootScope модуля з інжектора та сповістити всі дочірні елементи. У AngularJS є два методи роботи з подіями — $emit і $broadcast. Відмінність першого від другого полягає в тому, що він працює “вгору” і його може зупинити будь-який батьківський обробник. Загалом, прямий аналог подій DOM. Другий же повідомляє "вниз" і його неможливо зупинити. Обидва методи розпочинають роботу з поточної області видимості.

Отже, спробуємо підбити підсумки всіх міркувань і показати вже цей шматок коду.

Оскільки ми перебуваємо поза контекстом AngularJS, потрібно самим запустити внутрішній $digest() цикл. Як видно з консолі прикладу за посиланням вище, подія запускається саме після роботи всіх компонентів модуля. Що, власне, і потрібно.

А у нас тут можна отримати грант на тестовий період Яндекс.Хмари. Варто лише у полі «секретний пароль» запровадити «Хабр»