2014-11-05 71 views
1

我有一个服务,在我的AngularJS应用程序的控制,这应该是在同一个模块中,但有两个不同的文件:AngularJS:如何在同一个模块中拥有不同的服务/控制器?

// 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']) 

但现在我得到一个错误:

错误:[$注射器:unpr] ...

也许有人知道,这里可能是错的。非常感谢你!

回答

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”),没有依赖关系,你只需调用它。

+0

谢谢您的回复,Michael。您的第一个片段:我必须使用第1行(非常MyApp = ....)两次(在两个文件中),对不对?你的第二个片段:我在哪里声明模块“myModule”?或者我可以使用它,而无需声明它? – Tream 2014-11-05 12:01:49

+0

如果第一个脚本中的变量在第二个脚本中可见,则可以在第一个脚本中初始化该模块。 只是为了看看它是如何可能是: 负一方法: http://jsfiddle.net/yfvrjxve/ - 第二方法 http://jsfiddle.net/yfvrjxve/3/ – Michael 2014-11-05 12:17:13

+0

非常感谢迈克尔,它完美的作品(我使用第二种方法)。 :) – Tream 2014-11-05 13:55:49

1

有两个选项 -

  1. 使用一个变量作为由Michael提到

OR

  • 使用它像 -
  • // 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', // ..

    相关问题