9

API 側で名前空間モデルを使用しているため、Ember で複数のストアを使用しようとしています。

あか

App.Gl.Account = DS.Model.extend //Needs to route to /gl/accounts

App.Company = DS.Model.extend //Routes to /companies

私の最初の考えは、名前空間を定義することでした

App.Gl = Ember.Namespace.create({});
//and a store
App.Gl.Store = DS.Store.extend({adapter:DS.RESTAdapter({namespace:'gl'})});
App.Store = DS.Store.extend({adapter:DS.RESTAdapter})

問題は、モデルが App.Store に自動的にバインドされることです。

名前空間モデルを実現する方法に関するその他の提案は役に立ちます。個々のモデルごとに名前空間を指定する簡単な方法がある限り、クライアント js 側で名前空間を指定する必要さえありません。

4

3 に答える 3

23

Ember アプリケーションで複数のストアを使用することはできません。

代わりに、特定のタイプのアダプターを登録できます。

App.Store.registerAdapter('App.Post', DS.RESTAdapter.extend({
  // implement adapter; in this case
  url: "/gl"
}));

RESTAdapter特定のニーズがあり、(まだ進化している) アダプター API を使いこなそうとしない限り、おそらく を出発点として使用することをお勧めします。

于 2013-01-15T00:45:25.493 に答える
5

新しいバージョンの ember (私は 1.5.0-beta.1+canary.13995621 を実行していますが、1.4 にも registerAdapter メソッドがないようです) では、API が少し変更され、registerAdapter メソッドがなくなりました。

モデルにデフォルト以外のアダプターが必要な場合は、 を定義でき、App.<ModelName>Adapterそれがそのモデルに自動的に使用されます。

したがって、Post モデルがあり、そのモデルの名前空間を定義したい場合は、次のようになると思います。

App.PostAdapter = DS.RESTAdapter.extend({
  namespace: 'gl'
})
于 2014-02-21T19:59:23.000 に答える
0

もうregisterAdapter方法はありません。

Ember 2 の場合:

モデル固有のアダプターは、アダプター クラスをアプリケーションの app/adapters/ + モデル名 + .js ファイルに配置することで作成できます。

ソース: DS.Adapter クラス

于 2015-09-11T01:18:12.443 に答える