如何告诉ember通过另一个属性唯一标识记录?

时间:2014-07-12 20:24:07

标签: ember.js ember-data

如何让ember知道我希望它通过slug而不是id来唯一地查找记录。

在我的路线模型中,我可以做这样的事情

model: function(params) {
    return this.store.find('anime', params.anime_slug);
},
serialize: function(anime) {
    return { anime_slug: anime.get('anime_slug') };
},

但每当我打电话给model.reload()时,它会尝试重新加载记录的ID,而不是记录的slu ..那么如何让ember知道唯一标识记录使用anime_slug而非id

1 个答案:

答案 0 :(得分:0)

你几乎就在那里!

<强>路线:

App.AnimeRoute = Em.Route.extend({
  model: function(params) {
    return this.store.find('anime', { anime_slug: params.anime_slug }).then(function(results) { 
      return results.objectAt(0);
    });
  },

  serialize: function(model) {
    return { anime_slug: model.get('anime_slug') };
  },
});

请注意对模型方法的更改。

<强>路由器:

App.Router.map(function() {
  this.resource('anime', { path: '/anime/:anime_slug' });
});