2014-11-05 44 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', // ..

    相關問題