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) のスラッグと一致するフィールドがモデルにない場合、モデルは URL を生成する方法を認識できません。この場合は、ルートにシリアライズ メソッドを作成します。

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