如何正确链接到Ember.js中列表的项目

时间:2013-07-29 12:39:37

标签: ember.js

我在Ember.js中拥有这样的资源和路线:

  this.resource('ranking', function() {
    this.route('best', { path: '/best' });
    this.route('new', { path: '/new' });
  });
  this.resource('profile', {path: '/profile/:id' });

这样的数据路线:

App.RankingBestRoute = Ember.Route.extend({
  model: function()
  {
      return App.Profile.find();
  }
});

当我去../profile/1时,它会显示正确的个人资料,当我转到../profile/2时。

我的最佳排名模板如下所示:

{{#each model}}
      {{name}}
{{/each}}

我想在人们点击名称时将其重定向到/ profile / 1,所以我写道:

{{#each model}}
      {{#linkTo profile}}{{name}}{{/linkTo}}
{{/each}}

当我将光标指向名称时,它会显示如下链接:

...#/profile/<App.Profile:ember320:2>

而不是:

...#/profile/2

我做错了什么?如何解决?

2 个答案:

答案 0 :(得分:1)

如果您的模型在资源图(:id)中没有与slug匹配的字段,则它将不知道如何生成URL。如果是这种情况,请在路线中创建序列化方法。

App.ProfileRoute = Ember.Route.extend({
   serialize: function(model){
    return { id: model.get('whateverTheIdIsInYourModel')};
  }
});

答案 1 :(得分:0)

您的“个人资料”资源包含动态细分,因此您必须在通过linkTo进行转换时传递模型。像

这样的东西
{{#each model}}
  {{#linkTo profile this}}{{name}}{{/linkTo}}
{{/each}}

应该有用......

参考linkTo