0

我在 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

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

4

2 回答 2

1

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

App.ProfileRoute = Ember.Route.extend({
   serialize: function(model){
    return { id: model.get('whateverTheIdIsInYourModel')};
  }
});
于 2013-07-30T05:01:03.103 回答
0

您的“个人资料”资源具有动态段,因此您必须在通过 linkTo 转换时传递模型。所以像

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

应该管用...

参考链接到

于 2013-07-29T12:53:59.050 回答