2013-12-18 15 views

Antwort

611

Hier ist die Berufung Bestellung:

  1. app.config()
  2. app.run()
  3. Kompilierung Funktionen der Richtlinie
  4. app.controller()
  5. Richtlinie der Link-Funktionen (wieder (wenn sie in der dom zu finden sind) falls gefunden)

Hier ist ein simple demo, wo Sie jede Ausführung beobachten können (und experimentieren, wenn Sie möchten).

Von Angular's module docs:

Run Blöcke - ausgeführt werden sollen, nachdem der Injektor erzeugt und werden verwendet, um die Anwendung kurbeln. Nur Instanzen und Konstanten können in Laufblöcke eingefügt werden. Dies soll verhindern, dass die Systemkonfiguration während der Anwendungslaufzeit geändert wird.

Run-Blöcke sind am nächsten an der Hauptmethode in Angular. Ein Lauf Block ist der Code, der ausgeführt werden muss, um die Anwendung zu starten. Es wird ausgeführt, nachdem alle Dienste konfiguriert wurden und der Injektor erstellt wurde. Run-Blöcke enthalten normalerweise Code, der Unit-Test schwierig ist, und aus diesem Grund sollten in isolierte Module deklariert werden, so dass sie in den Unit-Tests ignoriert werden können.

Eine Situation, in der Laufblöcke verwendet werden, ist authentications.

+3

@KayakDave gesetzt worden bin ich nicht sicher, ob dieses Thema aus ist aber in Relation zu der oben genannten Ausführungsreihenfolge, wann würden die Dienste gestartet und wann würden sie ausgeführt werden? – jonnie

+3

Es ist wahrscheinlich ein bisschen spät, um Ihnen @jonnieM zu helfen, aber die Dienste werden je nachdem ausgeführt, wann sie zuerst benötigt werden - d. H. Wenn Sie zuerst einen Dienst in einem Ausführungsblock benötigen, wird dieser unmittelbar vor diesem Block ausgeführt. Ärgerlicherweise laufen die Provider entweder vor oder nach den Config-Blöcken - je nachdem, in welcher Reihenfolge sie kommen. Wenn man bedenkt, dass das einzige Mal, wenn Sie einen Provider direkt verwenden, in der Konfigurationsphase liegt, scheint das nicht richtig zu sein. –

+2

hi, ich habe gegabelt und modifiziert Ihre Geige Probe, um auch die Fabrik laden: https://jsfiddle.net/lorezz/4cxgpLqj/1 – user1490729

26

Speziell ...

Wie und wo wird app.run() verwendet? Nach Moduldefinition oder nach app.config(), nach app.controller()?

Wo:

In Ihrem package.js Z.B. /packages/dashboard/public/controllers/dashboard.js

Wie:

es diese aussehen wie

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' 
});