找不到Angular JS服务(无法实例化模块)

时间:2015-02-12 16:19:23

标签: javascript angularjs

我有3个具有以下层次结构的模块

  • app.js
    • module.js
      • 子module.js

app.js

(function(ng, module){
    module.config([function(){
        console.log('main app');    
    }]);

}) (angular, angular.module('app', ['module']));

module.js

(function(ng, module){

    module.config(['service', function(service){ 
        console.log('module');
    }]);

}) (angular, angular.module('module', ['sub-module']));

子module.js

(function (ng, module) {
    module.factory('service', [function () {
        console.log('test');
        return {};
    }]);

})(angular, angular.module('sub-module', []));

的index.html

<html ng-app="app">

  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
    <script src="app.js"></script>
    <script src="module.js"></script>
    <script src="sub-module.js"></script>
  </head>

  <body>
    <h1>Hello Plunker!</h1>
  </body>

</html>

plnkr:http://plnkr.co/edit/8BHhpZHrIYpTd5gn0IsZ?p=preview

我在控制台中出现此错误:未捕获错误:[$ injector:modulerr]

注射器有什么问题?

1 个答案:

答案 0 :(得分:1)

您正在尝试配置不存在的名为service的提供程序:

注意:下次使用非缩小版角度时,它会为您提供更多信息。

如果您要配置工厂称为服务,则必须将其设为提供者:

(function (ng, module) {
    module.provider('service', [function () {
        console.log('test');
        return {
          $get: function() { return {}; };
        };
    }]);

})(angular, angular.module('sub-module', []));

您也可以通过在您的情况下注入name_of_the_service + Provider来配置提供程序:

(function(ng, module){

    module.config(['serviceProvider', function(serviceProvider){ 
        console.log('module');
    }]);

}) (angular, angular.module('module', ['sub-module']));