すでにブートストラップされた角度モジュールに遅い依存関係を注入する方法はありますか?これが私の意味です:
次のように定義されたサイト全体の角度アプリがあるとします。
// in app.js
var App = angular.module("App", []);
そして、すべてのページで:
<html ng-app="App">
後で、アプリを再度開いて、現在のページのニーズに基づいてロジックを追加します。
// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
さて、(のようなロジックのものとオンデマンドのビットの1つは、独自の依存関係を必要と言うngTouch
、ngAnimate
、ngResource
、など)。それらを基本アプリにどのように添付できますか?これはうまくいかないようです:
// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped
私は事前にすべてを行うことができることに気づきます、すなわち-
// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);
または、すべてのモジュールを独自に定義してから、すべてをメインアプリに挿入します(詳細については、こちらを参照してください)。
// 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'])
しかし、これには、現在のページの依存関係で毎回アプリを初期化する必要があります。
私app.js
はすべてのページに基本を含め、各ページに必要な拡張機能を単に導入することを好みます(reports.js
、home.js
私は追加のブートストラップ・ロジック・毎回または削除何かを修正することなく、など)。
アプリが既にブートストラップされているときに依存関係を導入する方法はありますか?これを行う慣用的な方法とは何ですか?私は後者の解決策に傾倒していますが、私が説明した方法も実行できるかどうかを確認したいと思いました。ありがとう。