使用Ember.js为每个模型添加额外的url参数

时间:2013-02-05 14:50:58

标签: ember.js ember-data

我有两种模式:

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参数。

1 个答案:

答案 0 :(得分:4)

您应该创建第二个适配器来覆盖buildURL方法。然后为应该使用api密钥的任何类型注册该适配器。

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

Store.registerAdapter(App.Providers, apiAdatper);

有关每类型适配器的更多详细信息,请参阅此帖子:How to use DS.Store.registerAdapter

相关问题