AngularJS app.run () документація?


337

Як і де app.run()використовується? Після визначення модуля, після app.config()чи після app.controller()?

Я приймаю BreezeJS Angular Q , який запитує, чи можна виконати певний код у app.run()функції.


2
а після встановлення будь-якого кутового модуля .constants () встановлено
alfonsob

Відповіді:


650

Ось наказ про виклик:

  1. app.config()
  2. app.run()
  3. функції компіляції директиви (якщо вони знайдені в домі)
  4. app.controller()
  5. Функції посилання директиви (знову ж таки, якщо вони знайдені)

Ось просте демонстраційне повідомлення, де ви можете переглядати виконання кожного (і експериментувати, якщо хочете).

З модулів Документи Angular :

Запуск блоків - виконується після створення інжектора і використовується для швидкого запуску програми. Тільки екземпляри та константи можна вводити у запущені блоки. Це запобігає подальшій конфігурації системи під час роботи програми.

Запуск блоків - це найбільш близька річ у Angular до основного методу. Блок запуску - це код, який потрібно запустити для запуску програми. Він виконується після налаштування всіх служб та створення інжектора. Запущені блоки, як правило, містять код, який важко перевірити одиничним тестом, і з цієї причини слід оголосити в ізольованих модулях, щоб їх можна було ігнорувати в одиничних тестах.

Одна з ситуацій, коли використовуються запущені блоки - це під час аутентифікації .


4
@KayakDave Я не впевнений, чи це поза темою, але стосовно порядку виконання запуску, який ви згадали вище, коли б Служби ініціювались і коли вони запускалися?
jonnie

3
Можливо, трохи пізно вам допоможе @jonnieM, але служби виконуватимуться залежно від того, коли вони спочатку потрібні - тобто, якщо вам спочатку потрібна служба в блоці запуску, вона виконається безпосередньо перед цим блоком. Що стосується провайдерів, вони дратують, вони працюватимуть перед або після блоків конфігурацій - залежно від того, в якому порядку вони входять у код. Зважаючи на те, що єдиний раз, коли ви безпосередньо використовуєте провайдера на стадії конфігурації, це не здається правильним.
Zac Seth

2
привіт, я розпрощав та модифікував ваш зразок скрипки, щоб показати також фабричне навантаження: jsfiddle.net/lorezz/4cxgpLqj/1
Лорез

1
Дивовижно. Щоб бути ретельним, функції app.constant () викликаються раніше всього ... І app.factory () та інші сервісні функції викликаються "ліниво". Іншими словами, Angular використовує надані функції, щоб створити службовий екземпляр лише тоді, коли контролер або інша служба потребує його введення, навіть якщо це задовго після ініціалізації програми.
Ніко Белік

У проекті Ionic запуск за замовчуванням викликається перед конфігурацією. Чому так ?
Rayjax

28

Зокрема ...

Як і де app.run()використовується? Після визначення модуля чи після app.config(), після app.controller()?

Де:

У вашому пакеті.js Напр /packages/dashboard/public/controllers/dashboard.js

Як:

Зробіть так, щоб це виглядало так

var app = angular.module('mean.dashboard', ['ui.bootstrap']);

app.controller('DashboardController', ['$scope', 'Global', 'Dashboard',
    function($scope, Global, Dashboard) {
        $scope.global = Global;
        $scope.package = {
            name: 'dashboard'
        };
        // ...
    }
]);

app.run(function(editableOptions) {
    editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.