1

我有一个获取 url 的服务,需要创建为具有应用程序特定配置的单例。

我的几个控制器需要使用此服务。

如何在一个地方创建此服务,最好在应用程序中创建并在控制器之间共享,以便他们可以直接使用它?

我的模块被分成不同的文件,使用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
})

是否有这样做的内置方式或最佳实践?还是我在架构中遗漏了什么?

4

1 回答 1

0

您可以创建一个类似于您已经在做的基类,以及来自它的所有应用程序控制器extend,如下所示:Controllerextend

// 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(...);
于 2012-07-18T19:25:18.880 回答