#angularjs
#angularjs
Вопрос:
На скриншоте ниже я работаю над вкладкой под названием ICD Group. Я создал свой сервис, контроллер и html, но когда я нажимаю вкладку ICD Group, я получаю сообщение об ошибке ниже. Ниже экрана находится html, в котором у нас есть 4 ng-click:
Error: $injector:unpr
Unknown Provider
Unknown provider: $uibModalProvider <- $uibModal <- rpmICDGroupController
angular.js:13642 Error: [$injector:unpr] http://errors.angularjs.org/1.5.6/$injector/unpr?p0=$uibModalProvider <- $uibModal <- rpmICDGroupController
at http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:6:412
at http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:43:84
at Object.d [as get] (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:40:344)
at http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:43:146
at d (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:40:344)
at e (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:41:78)
at Object.invoke (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:41:163)
at P.instance (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:89:399)
at n (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:65:10)
at g (http://www.agemr.com:9100/mobiledoc/jsp/webemr/js/angularjs/angular.min.js:58:429) <div ng-include="rpmicdGroupTab" class="ng-scope">
rpmAdminIcdGroupService.js
angular.module('rpm.rpmIcdGroupService',[]).factory('rpmIcdGroupService', function($http) {
// My service code goes here
}
rpmAdminIcdGroupController.js
var rpmAdminDependancies = ['oc.lazyLoad', 'rpm.rpmIcdGroupService','ecw.pagination','ecw.dir.scrollpane'];
var rpmAdminModule = angular.module('rpmAdminICDGroup', rpmAdminDependancies);
rpmAdminModule.controller('rpmICDGroupController',['$scope', '$ocLazyLoad', '$uibModal', 'rpmIcdGroupService',
function($scope, $ocLazyLoad, $uibModal, rpmIcdGroupService) {
//My controller code goes here
}]);
rpmIcdGroup.html:
<html>
<body>
<div class="orangetheme" ng-controller="rpmICDGroupController">
// html code for icd group goes here
</body>
</html>
rpmAdminDashboard.html : Пожалуйста, обратите внимание, что loadICDGroup() вызывает rpmAdminDashboardController
<div class="orangetheme" ng-app="rpmApp" ng-controller="rpmController" ng-init = "rpmAdminInit()" style="background-color: white;height: 700px;width: 100%">
<!-- other code -->
<ul class="nav">
<li ng-click="deviceTypeMethodName"><a href="#device-settings-tab" data-toggle="tab">Device Type Settings</a></li>
<li ng-click="loadICDGroup()"><a href="#icd-group-tab" data-toggle="tab">ICD Group</a></li>
<li ng-click="loadRpmInsurances()"><a href="#insurances-tab" data-toggle="tab">Insurances</a></li>
<li ng-click="generalSettingsMethodName"><a href="#general-settings-tab" data-toggle="tab">General Settings</a></li>
</ul>
rpmAdminDashBoardController.js
var rpmAdminDependancies = ['oc.lazyLoad', 'rpm.rpmInsuranceService', 'rpm.rpmIcdGroupService'];
var rpmAdminModule = angular.module('rpmApp', rpmAdminDependancies);
rpmAdminModule.controller('rpmController',['$scope','$ocLazyLoad','rpmInsuranceService', 'rpmIcdGroupService','$rootScope',
function($scope , $ocLazyLoad, rpmInsuranceService, rpmIcdGroupService) {
$scope.loadICDGroup = function(){
$ocLazyLoad.load({
name : 'rpmAdminICDGroup',
files : [
'/mobiledoc/jsp/webemr/ccmr/rpm/rpminsurance/js/controller/rpmAdminIcdGroupController.js'
]
}).then(function() {
$scope.rpmicdGroupTab ='';
$scope.rpmicdGroupTab = '/mobiledoc/jsp/webemr/ccmr/rpm/rpminsurance/html/rpmIcdGroup.html';
}, function(e) {
console.log(e);
});
};
}]);
Ответ №1:
Эта ошибка обычно означает, что вы либо забыли зарегистрировать службу / контроллер / компонент, либо, если вы используете другой модуль в своем приложении, вы забыли зарегистрировать этот модуль как зависимость. На этот раз это последнее: angular.module('rpm.rpmIcdGroupService',[])
этот пустой массив означает, что вы никогда не регистрировали ни один из ui.xxx
модулей в качестве зависимости от вашего модуля. Поскольку вы используете диалоговое окно, вам необходимо зарегистрировать модуль 'ui.bootstrap'
.
var rpmAdminModule = angular.module('rpm.rpmIcdGroupService',['ui.bootstrap'])
Не забывайте, что вам также нужна ссылка на файл сценария этого модуля, либо включенный в вашу сборку, либо на html-странице в качестве ссылки на сценарий. Какой из них зависит от того, как вы отправляете свое приложение.
Ответ №2:
Иногда эта ошибка возникает, когда вы регистрируете angular.module(‘YourAppName’, []) более одного раза в своем приложении. Вы должны зарегистрировать модуль один раз, как angular.module(‘YourAppName’, []), а затем получить его с помощью angular.module(‘YourAppName’). Для получения дополнительной информации вы также можете перейти по этой ссылке:http://www.onemorecommit.com/2015/10/27/fixing-angular-injector-unpr-unknown-provider /. попробуйте это и прокомментируйте, если проблема все еще сохраняется.