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')
});

这里缩短了 FIXTURES

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

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

任何想法如何实现这一点,我确定我错过了一些非常简单的东西,只是不知道是什么。

编辑

有趣的是,在原始项目中,如果我在假设显示详细信息的 url 上重新加载,我会看到详细信息,但这只会发生一次。我将模型打印到控制台:

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

有两件事使您的代码无法正常工作:

您正在将 传递car{{linkTo 'details' car}}助手。因此, thecar将是DetailsRoute(也是 the DetailsController)的模型,但您想要的是car.details

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

另一件不起作用的事情是您的固定装置id是整数。

如您在此 JSFiddle 中所见,将它们替换为字符串即可。

于 2013-02-03T16:11:58.213 回答