我有一段需要调用角度服务的javascript代码。我尝试通过检索定义服务的角度模块来访问服务,然后自己获取服务:
var messagemanagerModule = angular.injector(['ng', 'portal.services.messagemanager']);
var messageService = messagemanagerModule.get('MessageService');
messageService.postMessage('portal', moduleId, 'selectModule');
模块和服务的定义如下:
angular.module('portal.services.messagemanager', ['modules.modal', 'modules.softlogoff'])
.factory('MessageService', messageService);
messageService.$inject = ['$rootScope', '$modal', '$translate', 'ConfigurationService'];
function messageService($rootScope, $modal, $translate, ConfigurationService) {
var service = {
showMessage: showMessage,
showSoftLogoff: showSoftLogoff,
postMessage: postMessage,
supportedMessages: supportedMessages
};
return service;
不幸的是我收到错误:
Error: $injector:unpr Unknown provider: $modalProvider <- $modal <- MessageService"
我想我需要注入$ modal,但我不知道怎么做。
答案 0 :(得分:0)
ui-bootstrap库现在使用`$ uibModal'服务。
因此您需要注入$uibModal
服务。
messageService.$inject = ['$rootScope', '$uibModal', '$translate', 'ConfigurationService'];
function messageService($rootScope, $uibModal , $translate, ConfigurationService) {
var service = {
showMessage: showMessage,
showSoftLogoff: showSoftLogoff,
postMessage: postMessage,
supportedMessages: supportedMessages
};
return service;
答案 1 :(得分:0)
我认为您需要将ui.bootstrap模块作为模块的依赖项包含在内: 在你的依赖项中包含ui.bootstrap:
angular.module('portal.services.messagemanager', ['modules.modal','modules.softlogoff','ui.bootstrap'])
此外,您需要在html中的某处包含ui-bootstrap-xxx.min.js。 如果您在版本&gt; = 0.14中使用ui-bootstrap,则需要将$ modal更改为$ uibModal