複数のウィジェットを含むページがあります。ページが読み込まれた後、URL を含むウィジェットのリストを取得します。次に、URL を ng-include します。
各ウィジェットには独自のコントローラーがあり<script>
、ウィジェット html のタグを使用してロードされます。ウィジェット リストは動的であるため、ページの読み込み時にウィジェット .js ファイルを読み込むことができません。(そうすると、正常に動作します。) エラーが発生し続けます。
コントローラーユニットをテスト可能にするために、サービスで $http 呼び出しをラップしようとしています。
ここに私のHTMLがあります:
<script src="/widget/fooWidget.js"></script>
<div ng-controller="FooWidgetCtrl">
...
</div>
そして、これが私のfooWidget.jsです:(Widgets
ページの読み込み時に読み込まれるファイルで定義されたモジュールがあります)
Widgets.service('FooWidgetSvc', function($http) {
this.getSomething = function() {
// $http methods
}
});
function FooWidgetCtrl($scope, $http, FooWidgetSvc) {
FooWidgetSvc.getSomething();
return $scope.FooWidgetCtrl = this;
}
そして、次のエラーが表示されます。
Error: Unknown provider: FooWidgetSvcProvider <- FooWidgetSvc
at Error (<anonymous>)
angular ブートストラップ プロセスの完了後にサービスを定義しようとしているため、これが発生していると思います。
それが役に立ったら、プランカーを作ることができます。
アップデート
これまでの回答に感謝します。私の問題を説明するのに役立つプランカーを作成しました: http://plunker.co/edit/iKzwnlZ7bNDjmR05qGDC
コントローラーを手動で登録する方法を理解し、それをプランカーに含めました。