我有一个获取网址的服务,需要创建一个具有应用程序特定配置的单例。
我的一些控制器需要使用此服务。
如何在一个地方创建此服务,最好是在应用程序中并在控制器之间共享,以便他们可以直接使用它?
我的模块使用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 :(得分:0)
您可以创建一个extend
Controller
基类,就像您已经在做的那样,所有应用程序控制器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(...);