如何自定义特定模型的Ember存储路径?

时间:2015-08-30 09:58:54

标签: rest ember.js ember-data

我在HttpContext.Items处有一个API端点。

我尝试使用Ember Data来获取此端点。我此时对电影建模不感兴趣,只是演员。我的路线看起来像这样:

/movies/:movie_id/actors

我的演员模特很简单:

this.route('actors', { path: '/movies/:movie_id/actors' });

在我的演员路线中,我有:

DS.Model.extend({
  name: DS.attr("name")
})

这将导致Ember发送model: function(params) { // params contains movie_id return this.store.findAll('actor') } 的请求。如何告诉Ember向/actors发送请求?

我的JSON以[{1}}格式返回,我使用/movies/:movie_id/actors,如果相关的话。我使用的是Ember 2.0。

1 个答案:

答案 0 :(得分:1)

DS.Store没有解决问题"路径"概念。它更像是一个数据桶,当它被补充时,可能会减轻开发人员使用提供程序(获取/更新/创建/缓存等)的负担。在你的情况下,它看起来类似于:

Using DS.Store for data

ActiveModelAdapter,您现在正在使用的特定约定用于访问,并且与您的数据提供商不兼容。那么,你有什么选择?

  1. 通过重写pathForTypebuildURL方法自定义ActiveModelAdapter(注意 - 链接用于RESTAdapter,因为ActiveModelAdapter是它的子类)
  2. 选择更兼容的适配器甚至write your own
  3. 不要使用适配器 - 通过AJAX获取数据并使用push() / pushPayload()
  4. 直接将其反馈到商店