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. 지시문의 컴파일 함수 (dom에서 발견 된 경우)
  4. app.controller()
  5. 지시문의 링크 함수 (다시 발견 된 경우)

다음은 각 데모 가 실행되는 것을보고 원하는 경우 실험 할 수 있는 간단한 데모 입니다.

에서 각도의 모듈 문서 :

실행 블록 -인젝터가 생성 된 후 실행되며 응용 프로그램을 킥 스타트하는 데 사용됩니다. 인스턴스와 상수 만 실행 블록에 주입 할 수 있습니다. 이는 응용 프로그램 런타임 동안 추가 시스템 구성을 방지하기위한 것입니다.

런 블록은 주요 방법과 Angular에서 가장 가까운 것입니다. 실행 블록은 응용 프로그램을 시작하기 위해 실행해야하는 코드입니다. 모든 서비스가 구성되고 인젝터가 작성된 후에 실행됩니다. 런 블록에는 일반적으로 단위 테스트가 어려운 코드가 포함되므로 이러한 이유로 단위 테스트에서 무시할 수 있도록 분리 된 모듈로 선언해야합니다.

실행 블록이 사용되는 한 가지 상황은 인증 중 입니다.


4
@KayakDave 이것이 주제가 아닌지 확실하지 않지만 위에서 언급 한 실행 순서와 관련하여 언제 서비스가 시작되고 언제 실행됩니까?
jonnie

3
@jonnieM을 돕기에는 약간 늦었지만 서비스는 처음 필요한 시점에 따라 실행됩니다. 즉, 실행 블록에 서비스가 먼저 필요한 경우 해당 블록 바로 전에 실행됩니다. 프로 바이더에 관해서는 성가신 코드의 순서에 따라 구성 블록 전후에 실행됩니다. 공급자를 직접 사용하는 유일한 시간이 구성 단계에 있다는 것을 고려할 때 이것은 옳지 않은 것 같습니다.
Zac Seth

2
안녕, 나는 공장로드를 보여주기 위해 바이올린 샘플을 포크하고 수정했습니다 : jsfiddle.net/lorezz/4cxgpLqj/1
Lorezz

1
대박. 철저하게 말하면, app.constant () 함수는 모든 것보다 먼저 호출됩니다 ... 그리고 app.factory () 및 다른 서비스 함수는 "게으르게"호출됩니다. 즉, Angular는 제공된 함수를 사용하여 앱이 초기화 된 지 오래 된 경우에도 컨트롤러 또는 다른 서비스에 주입이 필요한 경우에만 서비스 인스턴스를 생성합니다.
Niko Bellic

이온 프로젝트에서 기본적으로 실행은 구성 전에 호출됩니다. 왜 그런 겁니까 ?
Rayjax

28

구체적으로 특별히...

어떻게 그리고 어디에 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'
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.