我有一个包含多个小部件的页面。页面加载后,我得到一个包含 url 的小部件列表。然后我 ng-include url。
每个小部件都有自己的控制器,使用<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>)
我预计会发生这种情况,因为我正在尝试在角度引导过程完成后定义服务。
如果有帮助,我可以做一个笨拙的人。
更新
感谢您到目前为止的回复。我创建了一个 plunker 来帮助说明我的问题:http ://plunker.co/edit/iKzwnlZ7bNDjmR05qGDC
我已经弄清楚如何手动注册控制器,并将其包含在 plunker 中。