3

私は2つのモデルを持っています:

App.Providers = DS.Model.extend({    
    name: DS.attr('string'),
    description: DS.attr('string'),
    logo: DS.attr('string'),
    products: DS.hasMany('App.Products')
});

App.Products = DS.Model.extend({    
    name: DS.attr('string'),
    description: DS.attr('string')
    provider: DS.belongsTo('App.Providers'), 
});

どちらも同じアダプタを使用しています。ただし、Productsモデルの場合、URLに追加のURLパラメーター(APIキー)を追加したいと思います。これを実装するためにアダプター(またはシリアライザー)を拡張するにはどうすればよいですか?

したがって、プロバイダーに対してGETを実行する場合の例を示します。

http://example.com/ap1/v1/providers/

および製品の場合:

http://example.com/ap1/v1/products/?api_key=1234

追加するときにこれを追加できることはわかっていますApp.Products.find({api_key=1234})が、追加すると問題が発生します。

var providers = App.Providers.find(1);
providers.get('products');

編集:アダプターのbuildURLメソッドをオーバーライドしようとしましたが、特定のモデルにのみapi_keyパラメーターを追加したいのであまり便利ではありません。

4

1 に答える 1

4

buildURLメソッドをオーバーライドする2番目のアダプターを作成する必要があります。次に、APIキーを使用する必要があるすべてのタイプにそのアダプターを登録します。

apiAdapter = originalAdapter.extend({
  buildURL: ....
}));

Store.registerAdapter(App.Providers, apiAdatper);

タイプごとのアダプターの詳細については、この投稿を参照してください:DS.Store.registerAdapterの使用方法

于 2013-02-05T16:54:51.373 に答える