routes.js
angular
.module('main')
.config(config);
config.$inject = ['$routeProvider', '$httpProvider'];
function config($routeProvider){
$routeProvider
.when('/', {
templateUrl:'main/views/landing.client.view.html',
controller:'MainController',
controllerAs:'mainCtrl',
resolve: {
orgTypes: orgTypes
}
})
.otherwise({
redirectTo:'/'
});
}
function orgTypes($http){
return $http
.get('emrsvs/orgTypes')
.then(function successCallBack(response){
return response;
}, function errorCallBack(error){
console.log(error);
});
}
controller.js
angular
.module('main')
.controller('MainController', MainController);
MainController.$inject = ['$rootScope', '$timeout', 'orgTypes'];
function MainController($rootScope, $timeout, orgTypes){
var mainCtrl = this;
mainCtrl.orgTypes = orgTypes;
}
错误
[$injector:unpr] Unknown provider: orgTypesProvider <- orgTypes <- MainController
这里我从路由到控制器注入一个依赖'orgTypes'。它产生了未知的提供程序错我的sysntax有什么问题吗?谁能找到我的错误
答案 0 :(得分:1)
在orgTypes函数定义之前,您应该在routes.js中包含以下代码
angular.module('main')
.factory('orgTypes', orgTypes);
orgTypes.$inject = ['$http'];
/*You need to apply following changes also in controller*/
angular
.module('main')
.controller('MainController', MainController);
MainController.$inject = ['$rootScope', '$timeout', 'orgTypes'];
function MainController($rootScope, $timeout, orgTypes){
var mainCtrl = this;
orgTypes.then(function(response){
mainCtrl.orgTypes = response;
})
}
&#13;
答案 1 :(得分:0)
如果向控制器注入ng-view
指令,我看不出有什么问题。
<div ng-app="main">
<ng-view></ng-view>
</div>
您的代码适用于this JSFiddle。
在路由器配置中,从解析器功能注入orgTypes
。 $routeProvider
服务将解析程序作为 locals 注入控制器。该方法运行正常。
如果您使用ng-controller
指令加载MainController
,则会收到该错误。在这种情况下,$compile
服务无法访问这些解析器。