2013-01-14 12 views
9

私はApi側に名前空間モデルを持っているので、私はEmberで複数のストアを使用しようとしています。Ember jsモデルにストアを指定できますか?

阿嘉

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側で名前空間を指定する必要はありません。

+0

、私はまだそれが適切に燃えさしデータを使用するようになると回転しますが、[リビジョン11](https://github.com/emberjs/data/blob/masterあたりとしててります/BREAKING_CHANGES.md#loading-data)、私はあなたが複数の店に反対して複数のアダプタを持っている必要がありますと思う。 – MilkyWayJoe

答えて

23

Emberアプリケーションに複数のストアを置いてはいけません。

代わりに、あなたが特定の種類のアダプタを登録できます。

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

あなたが特定のニーズを持っている(と降りるために喜んと汚れている場合を除きあなたはおそらく、出発点としてRESTAdapterを使用したいと思うでしょうまだ進化している)アダプターAPI。

+0

ありがとうYehuda、これが存在するかどうかわからなかった、私はガイドにこれを追加するプルを提出することがあります。私は名前空間モデルをサポートするためにRESTAdapterを拡張する道を進んでいました。つまり、App.Gl.Accountは '/ gl/accounts'にルーティングされます – davydotcom

+0

代わりに、特定のアダプタでurl: "/ gi"を使用していたはずです。私はそれについてもっと明確に答えるように更新します。 –

+0

答えの更新をお待ちしております、Yehuda Katz。 –

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' 
}) 
0

registerAdapter方法は、もはやあります。

エンバー2の場合:

モデル固有のアダプタアプリ/アダプタ/ +モデル名+アプリケーションの.jsファイルであなたのアダプタクラスを置くことによって作成することができます。

出典:DS.Adapter Class

関連する問題