现在几个小时以来我一直在讨论这个问题,似乎无法在SO上找到解决方案。
我有以下内容:
//controller.js
(function() {
'use strict';
angular
.module('seed-module')
.controller('SeedPageController', SeedPageController);
SeedPageController.$inject = ['companyListPrepService', 'logger'];
function SeedPageController(companyListPrepService) {
var vm = this;
vm.companies = companyListPrepService;
console.log(vm.companies.data);
}
angular
.module('seed-module')
.factory('companyListService', companyListService);
companyListService.$inject = ['$http', 'logger'];
function companyListService($http, logger) {
return {
getCompanies: getCompanies
};
function getCompanies() {
return $http.get('/companies.json')
.success(function (data) {
return data;
})
.error(function (error) {
logger.error('XHR Failed for .' + error);
});
}
}
对于我的路线:
//seed.config.js
(function() {
'use strict';
angular
.module('seed-module')
.config(moduleConfig);
/* @ngInject */
function moduleConfig($translatePartialLoaderProvider, $stateProvider, triMenuProvider) {
$translatePartialLoaderProvider.addPart('app/seed-module');
$stateProvider
.state('triangular.admin-default.seed-page', {
resolve: {
companyListPrepService : companyListPrepService
},
url: '/seed-module/seed-page',
templateUrl: 'app/seed-module/seed-page.tmpl.html',
// set the controller to load for this page
controller: 'SeedPageController',
controllerAs: 'vm'
});
}
function companyListPrepService(companyListService) {
return companyListService.getCompanies();
}
})();
我的console.log(vm.companies.data);在我的REST端点结束时给出了对象,但是,我得到了一个
错误:[$ injector:unpr]未知提供者:companyListPrepServiceProvider< - companyListPrepService< - SeedPageController。
我对AngularJS相对较新,并且不知道companyListPrepServiceProvider来自哪里。我甚至不知道在哪里调试这个......有什么想法吗?
答案 0 :(得分:3)
您的代码按原样运行。有a working example,其中一部分是AS。 (确实,严格符号的混合不好,我们应该在任何地方使用明确的$inject = [...]
- 但这不是问题)
那么,问题可能是什么?我会说,控制器SeedPageController
用于elswhere,在某些其他状态, NOT 包含resolve语句:
resolve: {
//companyListPrepService : companyListPrepService
},
上面有错误消息的broken example
错误:[$ injector:unpr]未知提供者:companyListPrepServiceProvider< - companyListPrepService< - SeedPageController
答案 1 :(得分:0)
我猜你是否正在缩小你的代码,因此,你错过了companyListPrepService
函数的DI注释。尝试添加
companyListPrepService.$inject = ['companyListService'];
到seed.config.js
。
或者,尝试使用数组注释函数
resolve: {
companyListPrepService: ['companyListService', function(companyListService) {
return companyListService.getCompanies().then(function(response) {
// as mentioned in comments, stop using "success"
return response.data;
});
}]
}