我收到一個angular.js:14362 Error: [$injector:unpr] Unknown provider: reportTypeServiceProvider <- reportTypeService <- ReportTypeController
錯誤。
我發現了一堆關於這個東西,但我仍然無法弄清楚的問題是在我的代碼。那就是:
pitchviz.js:
(function() {
'use strict';
angular
.module('pitchviz', [
'pitchviz.config',
'pitchviz.routes',
'pitchviz.report-types'
]);
angular
.module('pitchviz.config', []);
angular
.module('pitchviz.routes', ['ngRoute']);
angular
.module('pitchviz')
.run(run);
run.$inject = ['$http'];
function run($http) {
$http.defaults.xsrfHeaderName = 'X-CSRFToken';
$http.defaults.xsrfCookieName = 'csrftoken';
}
})();
pitchviz.config.js:
(function() {
'use strict';
angular
.module('pitchviz.config')
.config(config);
config.$inject = ['$locationProvider'];
function config($locationProvider) {
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
}
})();
pitchviz.routes.js:
(function() {
'use strict';
angular
.module('pitchviz.routes')
.config(config);
config.$inject = ['$routeProvider'];
function config($routeProvider) {
$routeProvider.when('/', {
controller: 'ReportTypeController',
controllerAs: 'vm',
templateUrl: '/static/templates/report-types/report-types.html'
}).otherwise('/');
}
})();
報告類型/報告-types.modules.js:
(function() {
'use strict';
angular
.module('pitchviz.report-types', [
'pitchviz.report-types.controllers',
'pitchviz.report-types.services'
]);
angular
.module('pitchviz.report-types.controllers', []);
angular
.module('pitchviz.report-types.services', []);
})();
報告類型/控制器/報告-type.controller.js:
(function() {
'use strict';
angular
.module('pitchviz.report-types.controllers')
.controller('ReportTypeController', ['reportTypeService', ReportTypeController]);
ReportTypeController.$inject = ['reportTypeService'];
function ReportTypeController(reportTypeService) {
var vm = this;
vm.reportType = undefined;
activate();
function activate() {
reportTypeService.get().then(reportTypeSuccess, reportTypeError);
function accountSuccess(data, status, headers, config) {
console.log(data);
vm.reportType = data.data;
}
function reportTypeError(data, status, headers, config) {
console.log(data);
console.log(status);
}
}
}
})();
報告類型/服務/報告-type.service.js:
(function() {
'use strict';
angular
.module('pitchviz.report-types.services')
.service('reportTypeService', ['reportTypeService', reportTypeService]);
reportTypeService.$inject = ['$http'];
function reportTypeService($http) {
var reportTypeService = {
get: get
};
return reportTypeService;
function get() {
console.log("service");
return $http.get('/api/report-types/');
}
}
})();
這是怎麼回事嗎?謝謝!每個文件
嗯....哇,這裏你的語法是超級混亂。如果你打算使用$ inject,只使用$ inject,不要通過數組注入(示例在這裏:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#單獨的數據的呼叫)。要說出這裏發生的事情是非常困難的。好像你正試圖將reportTypeService注入到reportTypeService中,這沒有任何意義。 –
無論您創建的服務,控制器等是否已注入到index.html文件中。當angular找不到您要注入的某個依賴項時,通常會發生此類錯誤。 – pritesh
'.service('reportTypeService',['reportTypeService',reportTypeService]); reportTypeService。$ inject = ['$ http'];'這看起來不太好。只要堅持其中的一個(並順便說一句,內聯註釋是錯誤的)。 – estus