我完全被卡住了,这是小提琴。在这个例子中,我希望能够在访问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);
}
});
有两件事会使代码无法工作:
您正在将car
传递给{{linkTo 'details' car}}
辅助对象。因此,car
将是DetailsRoute
(以及DetailsController
)的模型,但您想要的是car.details
:
{{#each car in controller}}
{{#linkTo 'details' car.details}}
{{car.name}}
{{/linkTo}}
{{/each}}
另一件不起作用的事情是,您的固定装置id
是整数。
用字符串替换它们,它就会起作用,正如您在这个JSFiddle中看到的那样。