2012-07-18 84 views
1

我有一個提取網址的服務,需要使用特定於應用程序的配置創建爲單身人士。Ember - 如何在控制器之間共享單身人士

我的幾個控制器需要使用此服務。

如何在一個位置創建此服務,最好是在應用程序中並在控制器之間共享以便它們可以直接使用它?

我的模塊被分成不同的文件,使用requirejs。

URLService.js

var urlService = URLService.create({config: {...} }) 

SomeController.js

var SomeController = Em.Controller.extend({ 
    service: null 
}) 

應用:

App = Em.Application.create({ 
    SomeController: SomeController <-- inject the urlService into SomeController.service 
}) 

有一個內置的方式或這樣做的最佳做法?還是我錯過了架構中的某些東西?

回答

0

你可以從它創建一個基類,extendController就像你已經在做,那麼你所有的應用程序控制器extend像這樣:

// the service 
var urlService = URLService.create({config: {...} }) 

// the base controller class 
var BaseController = Em.Controller.extend({ 
    service: null, 
    init: function() { 
     this._super(); 
     this.set('service', urlService); 
    } 
}); 

// your controllers inheriting from your base controller already with the service instance 
var SomeController1 = BaseController.extend(...); 
var SomeController2 = BaseController.extend(...); 
+0

謝謝,這是不是我的意思,雖然,我m通過requirejs使用單獨的文件,這意味着我沒有像這樣共享配置的URLService的關閉功能。 我想使用requirejs依賴管理通過使用特定於應用程序的配置模塊來共享和配置服務,但我想知道是否有更好的方法來構建它。感謝您的回答和努力。 – 2012-07-19 08:02:21

相關問題