首页 > 解决方案 > Angular 出现错误:$injector:unpr 未知提供者

问题描述

在下面的屏幕截图中,我正在处理一个名为 ICD Group 的选项卡。我已经创建了它的服务、控制器和 html,但是当我单击 ICD 组选项卡时,我得到以下错误。下面的屏幕是一个 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=%24uibModalProvider%20%3C-%20%24uibModal%20%3C-%20rpmICDGroupController
    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 代码显示在屏幕上

标签: angularjs

解决方案


当您在应用程序中多次注册 angular.module('yourAppName',[]) 时,有时会发生此错误。您必须像 angular.module('yourAppName', []) 一样注册一次模块,然后通过 angular.module('yourAppName') 获取它。有关更多信息,您也可以访问此链接:http ://www.onemorecommit.com/2015/10/27/fixing-angular-injector-unpr-unknown-provider/ 。如果问题仍然存在,请尝试此操作并发表评论。


推荐阅读