Dan Wahlinの素晴らしい記事のおかげで、Angular のコントローラーとサービスの遅延読み込みを実装することができました。ただし、独立したモジュールを遅延ロードするクリーンな方法はないようです。
私の質問をよりよく説明するために、アプリが RequireJS なしで以下のような構造になると仮定します。
// Create independent module 'dataServices' module with 'Pictures' object
angular.module("dataServices", []).factory("Pictures", function (...) {...});
// Create 'webapp' ng-app, with dependency to 'dataServices', defining controllers
angular.module("webapp", ['dataServices'])
.controller("View1Controller", function (...) {...})
.controller("View2Controller", function (...) {...});
Plunker で RequireJS を使用したサンプル アプリは次のとおりです:
http://plnkr.co/aiarzVpMJchYPjFRrkwn
ng-app
問題の核心は、Angular がインスタンス化後の依存関係を追加できないことです。その結果、私の解決策は、 myで使用されるオブジェクトangular.injector
のインスタンスを取得するために使用することです。ファイルを参照してください。Picture
View2Controller
js/scripts/controllers/ctrl2.js
これにより、2つの問題が発生します。
- 注入されたサービスは角度の外部で実行されるため、すべての非同期呼び出しは $scope.$apply() で終了する必要があります
- 一部のオブジェクトは標準の角度構文を使用して注入でき、他のオブジェクトはインジェクターを明示的に使用する必要がある乱雑なコード。
RequireJS を使用して独立したモジュールを遅延ロードし、何らかの方法でこのモジュールを angular にフックして、通常の angular 依存性注入構文を使用できるようにする方法を理解した人はいますか?
注:質問は、独立したモジュール
の遅延読み込みに関するものです。この特定の例に対する簡単な解決策の 1 つは、キャッシュされた $providers を使用して "Pictures" オブジェクトを作成することですが、それは私が探しているものではありません。などのサードパーティ製モジュールで動作するソリューションを探しています。ng-app.config
angular-resource