AngularJS:如何在同一个模块中使用不同的服务/控制器?

时间:2014-11-05 11:55:02

标签: angularjs angularjs-module

我的AngularJS App中有一个服务和一个控制器,它应该在同一个模块中,但它是两个不同的文件:

// File 1 (Service)
angular.module('myService', ['ngRoute'])
.service('myService', // ... 


// File 2 (Controller)
angular.module('myController', ['ngRoute'])
.controller('myController', // ..

这很好用。现在我想要服务&控制器在一个模块中,所以我只能加载一个而不是两个模块。所以我将(两个文件中的)第一行更改为:

// Change in both files:
angular.module('myModule', ['ngRoute'])

但现在我收到了一个错误:

错误:[$ injector:unpr] ...

也许有人知道,这里可能有什么不对。非常感谢你!

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

var myApp = angular.module('myApp', []);

myApp.controller("myService"

myApp.service("myApp")

或者

angular.module("myModule").controller

angular.module("myModule").service

如果您使用angular.module(' myService',[])两次,则表示您正在初始化同一模块两次。 如果你只使用angular.module(" myModule"),没有依赖项,你就是在调用它。

答案 1 :(得分:1)

您有两种选择 -

  1. 使用Michael提及的变量
  2. OR

    1. 像 -
    2. 一样使用它

      
      
      // Initialize myService Module in any JS file 
         (make sure this file is included before File 1 and File 2
      angular.module('myService', ['ngRoute']);
      
      // File 1 (Service)
      angular.module('myService').service('myService', // ... 
      
      // File 2 (Controller)
      angular.module('myService').controller('myController', // ..