Ошибка получения Angular: $ инжектор: unpr неизвестный поставщик

#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);
            });
        };

    }]);
  

Мой HTML-код отображается на экране

Ответ №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 /. попробуйте это и прокомментируйте, если проблема все еще сохраняется.