1

私は完全に立ち往生しました、ここにフィドルがあります。この例では、url / cars / detailsにアクセスしたときに追加のデータをロードできるようにしたいのですが、どうすればそれができるのかわかりません。

これが私のモデルです:

App.Cars = DS.Model.extend({
    name: DS.attr('string'),
    details: DS.belongsTo('App.Details')
});

App.Details = DS.Model.extend({
    name: DS.attr('string'),
    color: DS.attr('string'),
    wheels: DS.attr('string')
});

そしてここで短縮されたフィクスチャ

App.Cars.FIXTURES = [{
  id: 1,
  name: 'Alfa Romeo',
  details: 1
}];

App.Details.FIXTURES = [{
  id: 1,
  name: 'Alfa Romeo',
  color: 'Red',
  wheels: '14'
}];

それを実現するためのアイデアはありますが、私は非常に単純なものを見逃していると確信しています。

編集

興味深いのは、元のプロジェクトで、詳細を表示するはずのURLをリロードすると、詳細が表示されることですが、それは1回だけです。モデルをコンソールに印刷しました。

App.DetailsRoute = Ember.Route.extend({
  model: function(params) {
    console.log(params) // prints once only if loaded app was loaded to this url
    return App.Details.find(params.table_id);
  },
  setupController: function(controller, model) {
    console.log(model) // prints every time you click on a car
    controller.set('content', model);
  }
});
4

1 に答える 1

1

コードが機能しない原因は2つあります。

あなたはヘルパーにを渡していcarます。{{linkTo 'details' car}}したがって、は(および)carのモデルになりますが、代わりに次のようにします。DetailsRouteDetailsControllercar.details

{{#each car in controller}}
    {{#linkTo 'details' car.details}}
        {{car.name}}
    {{/linkTo}}
{{/each}}

動作しない他のことは、フィクスチャidが整数であるということです。

これらを文字列に置き換えると、このJSFiddleで確認できるように機能します。

于 2013-02-03T16:11:58.213 に答える