Я начинаю со стека meanjs и добрался до начальника, что у меня нет правильного понимания Google.
У меня есть следующие файлы: **
(function () {
'use strict';
angular
.module('students')
.controller('StudentsListController', StudentsListController);
StudentsListController.$inject = ['StudentsService'];
function StudentsListController(StudentsService) {
var vm = this;
vm.students = StudentsService.query();
}
}());
Используя эту службу, я могу получить массив объектов Student в контроллере list-students, затем:
Список-students.client.controller.js
(function () {
'use strict';
angular
.module('students')
.factory('StudentsService', StudentsService);
StudentsService.$inject = ['$resource'];
function StudentsService($resource) {
return $resource('api/students/:studentId', {
studentId: '@_id'
}, {
update: {
method: 'PUT'
}
});
}
}());
Это работает по назначению. Я не понимаю, почему, когда я пытаюсь использовать одну и ту же услугу в другом контроллере, она, похоже, не в состоянии вставить, оставив меня с неопределенной переменной StudentsServices. Что дает?
students.client.controller.js
(function () {
'use strict';
// Students controller
angular
.module('students')
.controller('StudentsController', StudentsController);
StudentsController.$inject = ['$scope', '$state', 'Authentication', 'StudentsService'];
function StudentsController ($scope, $state, Authentication, student, StudentsService) {
var vm = this;
vm.authentication = Authentication;
vm.student = student;
vm.students = StudentsService.query();
...
}());
Ваш ввод неправильный.
'$scope', '$state', 'Authentication', 'StudentsService'
Но вы говорите, что контроллер ожидает
$scope, $state, Authentication, student, StudentsService
Я понял это, за AngularJS: Factory всегда не определена при вводе в контроллер
Это было то, что мои инъекции должны быть в том же порядке, что и параметры, переданные в функцию контроллера.
Ага!