У меня есть страница с несколькими виджетами. После загрузки страницы я получаю список виджетов, который содержит URL-адрес. Затем я указываю URL-адрес.AngularJS: Регистрация в службе
Каждый виджет имеет свой собственный контроллер, который загружается с помощью тега <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>)
Я ожидаю, что это происходит, потому что я пытаюсь определить e после завершения процесса угловой бутстрапа.
Я могу сделать плункер, если это поможет.
UPDATE
Спасибо за ответы до сих пор. Я создал плункер, чтобы помочь проиллюстрировать мою проблему: http://plunker.co/edit/iKzwnlZ7bNDjmR05qGDC
Я выяснил, как вручную зарегистрировать контроллер и включил его в плункер.
Пожалуйста, поделитесь с plunkr, я создал службы в модулях, которые, как я полагаю, и не столкнулся с какими-либо проблемами, я думаю, что проблема звучит так, как будто у нее нет определения для службы до того, как она ссылается. Контроллер, который использует службу, просто не может быть создан до создания службы, иначе поставщик не сможет найти его, когда он попытается выполнить инъекцию зависимостей. – shaunhusain
@shaunhusain, спасибо за ответ. Я просто добавил plunkr. Сначала создаю службу, затем контроллер. Я могу вручную зарегистрировать контроллер в модуле Widgets, но не могу определить способ ручного регистрации службы. – dob
Посмотрите, помогает ли этот ответ: http: // stackoverflow.com/questions/15250644/angularjs-load-a-controller-dynamiC# answer-15292441 –