1

URL をフェッチするサービスがあり、アプリケーション固有の構成を持つシングルトンとして作成する必要があります。

私のコントローラーのいくつかは、このサービスを使用する必要があります。

このサービスを 1 か所、できればアプリケーションで作成し、コントローラ間で共有して直接使用できるようにするにはどうすればよいですか?

私のモジュールは、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 に答える