既にブートストラップされた角度モジュールに遅延依存関係を挿入する方法はありますか? これが私が意味することです:
次のように定義された、サイト全体の角度のあるアプリがあるとします。
// 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
アプリが既にブートストラップされている場合に依存関係を導入する方法はありますか? これを行うための慣用的な方法 (または方法) と見なされるものは何ですか? 私は後者の解決策に傾いていますが、私が説明した方法も実行できるかどうかを確認したかったのです。ありがとう。