服务注入中的AngularJS $注入错误

时间:2017-03-01 16:07:19

标签: javascript angularjs angularjs-1.6

我是Angular的新手,所以如果你能帮助我,我会很高兴的。 我将逻辑拆分为2个文件(控制器和服务)。 我的服务代码:

(function () {
    'use strict';    
     angular
        .module('app', [])
        .factory('authservice', authservice);

    authservice.$inject = ['$http', '$logger'];

    function authservice($http, $logger) {
        return {
            signInOwner: signInOwner,
            signUpOwner: signUpOwner
        };

        function signInOwner(owner) {

        }

        function signUpOwner(owner) {

        }
    };
})();

我的控制器代码:

(function () {
  'use strict';

   angular
      .module('app', [])
      .controller('SignUpController', SignUpController);

   SignUpController.$inject = ['authservice'];

   function SignUpController (authservice) {
     var vm = this;
  }
})();

我在controller.js之前包含了我的services.js但仍然收到有关错误的authservice依赖项的错误

  

angular.js:14362错误:[$ injector:unpr]

请问你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

使用此synthax angular.module('app', []),您覆盖模块创建。 您应该使用angular.module('app')来检索它。

[]应该只使用一次:在创建模块时。

来自Angular module doc

  

请注意使用angular.module('myModule', [])将创建   模块myModule并覆盖任何名为myModule的现有模块。使用   angular.module('myModule')检索现有模块。

答案 1 :(得分:1)

在您的控制器代码中替换:

angular
      .module('app', [])
      .controller('SignUpController', SignUpController);

代表

angular
      .module('app') // notice the lack of [] here!!
      .controller('SignUpController', SignUpController);

这是因为使用[]表示您正在创建模块而没有它意味着您正在查找模块。由于模块是在创建服务的位置创建的,因此您无需再次创建它,只需找到它即可。