Gibt es eine Möglichkeit, eine späte Abhängigkeit in ein bereits gebootetes Winkelmodul einzufügen? Folgendes meine ich:
Angenommen, ich habe eine Website-weite Winkel-App, definiert als:
// in app.js
var App = angular.module("App", []);
Und auf jeder Seite:
<html ng-app="App">
Später öffne ich die App erneut, um Logik hinzuzufügen, die auf den Anforderungen der aktuellen Seite basiert:
// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
Nun, sagen , dass einer dieser On-Demand - Bits der Logik auch ihre eigenen Abhängigkeiten erfordert (wie ngTouch
, ngAnimate
, ngResource
usw.). Wie kann ich sie an die Basis-App anhängen? Das scheint nicht zu funktionieren:
// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped
Mir ist klar, dass ich alles im Voraus tun kann, dh -
// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);
Oder definieren Sie jedes Modul für sich und fügen Sie dann alles in die Haupt-App ein ( siehe hier für weitere Informationen ):
// in reports.js
angular.module("Reports", ['ui.event', 'ngResource'])
.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
// in home.js
angular.module("Home", ['ngAnimate'])
.controller("HomeController", ['$scope', '$http', function($scope, $http){
// ...
}])
// in app.js, loaded last into the page (different for every page that varies in dependencies)
var App = angular.module("App", ['Reports', 'Home'])
Dafür muss ich die App jedoch jedes Mal mit den Abhängigkeiten der aktuellen Seite initialisieren.
Ich ziehe den Grund enthalten app.js
in jeder Seite und einfach einzuführen , um die erforderlichen Erweiterungen auf jeder Seite ( reports.js
, home.js
usw.), ohne dass die Bootstrap - Logik jedes Mal zu überarbeiten, die ich hinzufügen oder entfernen etwas.
Gibt es eine Möglichkeit, Abhängigkeiten einzuführen, wenn die App bereits gebootet ist? Was ist der idiomatische Weg (oder die idiomatischen Wege), dies zu tun? Ich neige zu letzterer Lösung, wollte aber sehen, ob die von mir beschriebene Vorgehensweise auch möglich ist. Vielen Dank.