Ember:如何访问动态细分模板中的其他模型数据

时间:2016-07-31 23:01:29

标签: javascript ember.js ember-data

在动态细分模板中,如何使用路径显示模型中的数据?

例如,我将这三条路线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}}

1 个答案:

答案 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}}