2016-07-31 46 views
0

在动态细分模板中,如何使用路线显示模型中的数据?Ember:如何访问动态细分模板中的其他模型数据

所以,比如我有这三个途径与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}} 

回答

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}} 
+0

这些不能在'phone.hbs'模板中使用,但可以在其他模板中使用。看起来像模型被覆盖,因为它是一个动态的细分市场 –

+0

告诉我一件事是你通过linkTo这个动态的细分市场路线?如果您使用linkto并将phoneModel作为id参数传入,那么将跳过模型钩子,并将控制器模型设置为您从linkTo传递的模型。 –

+0

是的,我是,请看看我的编辑,让我知道我可以通过id,而不是模型参数,因为你提到。 –

相关问题