Ember: 如何在动态段模板中访问另一个模型数据

Ember: How to access another model data in a dynamic segment template

在动态分段模板中,如何使用路线显示来自模型的数据?

所以例如我有这三个路线 phone_id 作为动态段

Router.map(function() {
  this.route('phones');
  this.route('phone', {path: 'phones/:phone_id'});
  this.route('numbers');
});

phones/:phone_id 模板中,我试图显示所有数字模型。所以在 phone.js 路线中,我尝试 return 数字模型并输出它但它什么也没显示。

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 return 是正确的,尽管我什至没有将它设置为 return phone.js 路线。但是我为 numbers 实现的每个循环都没有 return 任何东西。

return 动态细分模板中的 return 数字模型数据是否有解决方法?

编辑:

我到达动态细分的方式是通过 link 到:

{{#each phones as |phone|}}
    <li>{{#link-to 'phone' phone}} {{phone.id}}{{/link-to}}</li>
{{/each}}

只有从路由的模型钩子返回的对象被设置为控制器的模型。

如果你想在模板中使用数字,那么在控制器中将其写为计算 属性。

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