Angular 将服务注入控制器时出现未知提供程序错误
Angular getting unknown provider error when injecting service into controller
我正在从事一个使用 IIFE 的项目,这个概念我才刚刚开始掌握。我的服务似乎很好,我正在使用一些 Jasmine 来确定它正在被定义,但是当我尝试将它注入我的控制器时,我得到了这个错误:
Unknown provider: StudentsServiceProvider <- StudentsService <- StudentsController
这里是有问题的控制器:
(function() {
'use strict';
angular
.module('ngInterview.students')
.controller('StudentsController', StudentsController);
StudentsController.$inject = ['StudentsService'];
function StudentsController(StudentsService) {
/**
* Model
*/
var vm = this;
/**
* Initialization
*/
activate();
/**
* Implementations
*/
function activate() {
// Initialization code goes here
vm.students = StudentsService.getStudents();
}
}
})();
这是服务,以防万一我在那里搞砸了:
(function() {
'use strict';
angular
.module('ngInterview.api.students')
.service('StudentsService', StudentsService);
StudentsService.$inject = ['$http'];
function StudentsService($http) {
/**
* Exposed functions
*/
this.getName = getName; // This function serves no purpose. It's just here as an example.
this.getStudents = function() {
return $http({
url: "CUSTOM_URL_HERE",
method: "GET"
}).then(function successCallback(res) {
return res;
}, function errorCallback(res) {
return this.getStudents();
});
}
/**
* Implementations
*/
function getName() {
return 'studentsService';
}
}
})();
上面列出的所有文件都包含在 index.html 中。如果我取出对 StudentsService 的引用,我不会收到任何错误,并且所有文件都会正确实例化。
由于服务 StudentsService
在另一个 module
中,您必须在主 module
中注入 'ngInterview.api.students'
module
,如下所示:
angular
.module('ngInterview.students', ['ngInterview.api.students'])
我正在从事一个使用 IIFE 的项目,这个概念我才刚刚开始掌握。我的服务似乎很好,我正在使用一些 Jasmine 来确定它正在被定义,但是当我尝试将它注入我的控制器时,我得到了这个错误:
Unknown provider: StudentsServiceProvider <- StudentsService <- StudentsController
这里是有问题的控制器:
(function() {
'use strict';
angular
.module('ngInterview.students')
.controller('StudentsController', StudentsController);
StudentsController.$inject = ['StudentsService'];
function StudentsController(StudentsService) {
/**
* Model
*/
var vm = this;
/**
* Initialization
*/
activate();
/**
* Implementations
*/
function activate() {
// Initialization code goes here
vm.students = StudentsService.getStudents();
}
}
})();
这是服务,以防万一我在那里搞砸了:
(function() {
'use strict';
angular
.module('ngInterview.api.students')
.service('StudentsService', StudentsService);
StudentsService.$inject = ['$http'];
function StudentsService($http) {
/**
* Exposed functions
*/
this.getName = getName; // This function serves no purpose. It's just here as an example.
this.getStudents = function() {
return $http({
url: "CUSTOM_URL_HERE",
method: "GET"
}).then(function successCallback(res) {
return res;
}, function errorCallback(res) {
return this.getStudents();
});
}
/**
* Implementations
*/
function getName() {
return 'studentsService';
}
}
})();
上面列出的所有文件都包含在 index.html 中。如果我取出对 StudentsService 的引用,我不会收到任何错误,并且所有文件都会正确实例化。
由于服务 StudentsService
在另一个 module
中,您必须在主 module
中注入 'ngInterview.api.students'
module
,如下所示:
angular
.module('ngInterview.students', ['ngInterview.api.students'])