У меня есть страница с несколькими виджетами. После загрузки страницы я получаю список виджетов, который содержит URL-адрес. Затем я ng-включаю 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>)
Я ожидаю, что это происходит, потому что я пытаюсь определить службу после завершения процесса начальной загрузки angular.
Я могу сделать плункер, если это поможет.
ОБНОВЛЕНИЕ
Спасибо за ответы. Я создал плункер, чтобы проиллюстрировать мою проблему: http://plunker.co/edit/iKzwnlZ7bNDjmR05qGDC
Я понял, как вручную зарегистрировать контроллер, и включил его в плункер.