角度资源注入的问题

Trouble with Angular Resource Injection

本文关键字:问题 注入 资源      更新时间:2023-09-26

我正在开始使用 meanjs 堆栈,并且已经达到了一个令人头疼的问题,我不了解正确谷歌。

我有以下文件:**

(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.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 变量。什么给?

学生.客户端.控制器.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:注入控制器时工厂总是未定义的

这是因为我的注入需要与传递到控制器函数的参数的顺序相同。

啊哈!