Документация по AngularJS app.run ()?

275

Как и где используется app.run()? После определения модуля, после app.config() или после app.controller()?

Я принимаю BreezeJS Angular Q, который спрашивает, можно ли запустить определенный код в функции app.run().

  • 2
    и после любого углового модуля .constants () были установлены
Теги:

2 ответа

565
Лучший ответ

Здесь вызывающий порядок:

  • app.config()
  • app.run()
  • директивные функции компиляции (если они находятся в dom)
  • app.controller()
  • функции директивных ссылок (опять же, если они найдены)

Здесь простая демонстрация, где вы можете наблюдать за каждым из них (и экспериментировать, если хотите).

От Angular документации по модулю:

Запустить блоки - выполнить выполнение после создания инжектора и используется для запуска     выражение. Только экземпляры и константы могут быть введены в блоки запуска. Это необходимо для предотвращения     дальнейшая конфигурация системы во время выполнения приложения.

Блоки запуска являются наиболее близкими в Angular к основному методу. Прогон block - это код, который нужно запустить для запуска приложения. Это выполняется после настройки всей службы и инжектор был создан. Блоки запуска обычно содержат код, который трудно провести единичный тест, и по этой причине следует объявить в изолированном модулей, чтобы их можно было игнорировать в модульных тестах.

Одна из ситуаций, когда используются блоки запуска, находится во время аутентификации.

  • 4
    @KayakDave Я не уверен, что это не по теме, но в отношении порядка выполнения, который вы упомянули выше, когда будут запущены службы и когда они будут запущены?
  • 3
    Возможно, уже немного поздно, чтобы помочь вам @jonnieM, но службы будут выполняться в зависимости от того, когда они нужны в первую очередь - то есть, если вам сначала понадобится служба в блоке выполнения, она будет выполняться непосредственно перед этим блоком. Что касается провайдеров, то, к сожалению, они будут работать либо до, либо после блоков конфигурации - в зависимости от того, в каком порядке они приходят в коде. Принимая во внимание, что единственный раз, когда вы напрямую используете провайдера, находится на этапе настройки, это не кажется правильным.
Показать ещё 7 комментариев
25

В частности...

Как и где используется app.run()? После определения модуля или после app.config(), после app.controller()?

Где:

В вашем package.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'
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню