3

ルートによっては、両方のアダプターを使用したいと考えています。現在、以下の店舗を運営しています。

if (window.USE_FIXTURES) { var my_adapter = 'DS.FixtureAdapter'; }
else                     { var my_adapter = SettingsApp.Adapter.create(); }

SettingsApp.Store = DS.Store.extend({
    revision: 12,
    adapter:  my_adapter
});

(SettinsApp.AdapterDS.RESTAdapter)

しかし、私が望むのは2つの店舗を持つことです。ルートごとにこれを行うことは可能ですか? このためにルーターを構成する方法の例を誰かが提供できますか?

4

3 に答える 3

5

@intuitivepixel の回答は、現在の Ember (v1.0+) では機能しなくなりました。registerAdapter が API に存在しなくなったためです。

最近では、アダプターの選択をオーバーライドするモデルごとにアダプターを宣言するだけです。

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

App.LegacyAdapter = DS.FixtureAdapter;
于 2013-12-28T20:47:47.713 に答える
0

@gonvaledそれはあなたが使用したためかもしれません

DS.Store.registerAdapter('App.LegacyModel', App.MyLegacyAdapter.extend({});

ではない

App.Store.registerAdapter('App.LegacyModel', App.MyLegacyAdapter.extend({});

同じ問題を追加し、App.Sotre を使用することですべて修正されました。

私の使用例では、同じモデルに対して 2 つの異なるアダプターが必要でした。残りのアダプタから表示されたすべての製品を保存して、フィクスチャ アダプタと sql lite を使用して、履歴ページでオフラインで表示できるようにします。

App.Store = DS.Store.extend({
    revision: 13,
    adapter: DS.RESTAdapter.create({
        url: app.apiUrl,
        namespace: app.apiNamespace
    })
});


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

App.Producthistory = App.Product;

App.Store.registerAdapter('App.Producthistory', DS.FixtureAdapter);

App.HistoriqueRoute = Ember.Route.extend({
    setupController: function(controller, model) {
    controller.set('model', App.Producthistory.find());
    }
});
于 2013-09-03T03:36:39.577 に答える