7

Adapter と Fixture Adapter と REST Adapter の違いは何ですか? また、それぞれをいつ使用するのですか?

4

1 に答える 1

22

DS.FixtureAdapter(またはDS.FixtureAdapter.create()) バックエンドとの通信を (まだ?) 気にしないが、データを「フィクスチャ」としてクライアントに保存する場合に使用します。モデルを宣言したら:

App.Thing = DS.Model.extend({
  name: DS.attr('string'),
  // ...
});

フィクスチャを定義できます:

App.Thing.FIXTURES = [
  {
    id: 1,
    name: '...',
    // ...
  },
  {
    id: 2,
    name: '...',
    // ...
  },
];

そして、それらに対して ember-data メソッド (例:App.Thing.findAll()など) を使用して操作することができますが、もちろん、ページが存続している間 (つまり、javascript 環境) しか存続しません。

DS.RestAdapter使用可能ですが、明らかにまだ開発中であり、Rails API にうまく適合するように設計されていますが、おそらく、使用している RESTful API で動作するように変更/拡張できます。を呼び出して処理することと、 をApp.Thing.findAll()呼び出して処理することを知っています。これは相対パスであり、渡す名前空間パラメーターに追加されます。/thingsApp.Thing.find(12)/things/12

App.store = DS.Store.create({
  revision: 4,
  adapter: DS.RestAdapter.create({
    namespace: 'http://what.ever/api/v1'
  })
});

DS.Adapterかなり抽象的です。前述の組み込みアダプターのスーパークラスです。どちらもニーズに合わない場合は、独自に実装することをお勧めします。

App.adapter = DS.Adapter.create({
  find: function(store, type, id) {
    // ...
    jQuery.get( ... , function(data) {
      store.load(type, id, data);
    });
  },
  createRecord: function(store, type, model) {
    // ...
    jQuery.post( ... , function(data) {
      store.didCreateRecord(model, data);
    });
  },
  // ...
});
App.store = DS.Store.create({
  revision: 4,
  adapter: App.adapter
});

それが役立つことを願っています。詳細については、 https://github.com/emberjs/dataの readme ドキュメントを参照してください。

于 2012-08-11T04:41:05.333 に答える