在动态细分模板中,如何使用路径显示模型中的数据?
例如,我将这三条路线phone_id
作为动态段
Router.map(function() {
this.route('phones');
this.route('phone', {path: 'phones/:phone_id'});
this.route('numbers');
});
在phones/:phone_id
模板中,我试图显示所有数字模型。所以在phone.js
路线中,我试图返回数字模型并输出它,但它没有显示任何内容。
import Ember from 'ember';
export default Ember.Route.extend({
numbers(){
return this.get("store").findAll('number')
}
});
我也尝试使用params.phone_id
作为参数,但它没有用。 (也没有显示错误。)
模板phone.hbs
看起来像
<h5> Device Id: {{model.device_id}}</h5>
{{#each numbers as |number|}}
{{number.digits}}
{{/each}}
有趣的是model.device_id
返回正确的一个,即使我甚至没有将它设置为在phone.js
路由中返回它。但是numbers
的每个循环,我确实实现了一些东西,并没有返回任何东西。
是否有解决方法可以在phone.hbs
动态细分模板中返回数字模型数据?
修改:
我到达动态细分的方式是通过以下链接:
{{#each phones as |phone|}}
<li>{{#link-to 'phone' phone}} {{phone.id}}{{/link-to}}</li>
{{/each}}
答案 0 :(得分:2)
只有从路径的模型钩子返回的对象被设置为控制器的模型。
如果要在模板中使用数字,则将其作为控制器中的计算属性写入。
numbers:Ember.computed(function(){
return this.store.findAll('number');
});
或者您可以在模型中设置这些属性
所以你的路线的模型钩子看起来像这样
model:function(params){
return Ember.RSVP.hash({
phone: this.store.findRecord('phone',params.phone_id),
numbers: this.store.findAll('number')
});
}
在此之后,您将在模型中获得两个属性
现在您的模板将如下所示
<h5> Device Id: {{model.phone.device_id}}</h5>
{{#each model.numbers as |number|}}
{{number.digits}}
{{/each}}