【问题标题】:Ember: How to access another model data in a dynamic segment templateEmber:如何在动态段模板中访问另一个模型数据
【发布时间】:2016-07-31 23:01:28
【问题描述】:

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

例如,我将这三个路由以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}}

【问题讨论】:

    标签: javascript ember.js ember-data


    【解决方案1】:

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

    如果您想使用模板中的数字,请将其写为控制器中的计算属性。

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

    【讨论】:

    • 这些不适用于phone.hbs 模板,但适用于其他模板。似乎模型被覆盖了,因为它是一个动态段
    • 告诉我一件事你是否通过linkTo到达这个动态段路由?如果您使用 linkto 并将 phoneModel 作为 id 的参数传递,则在这种情况下会跳过模型挂钩,并且控制器模型将设置为从 linkTo 传递的模型。
    • 是的,请查看我的编辑,并告诉我如何传递 id 而不是你提到的模型参数。
    • {{#link-to 'phone' phone.id}}{{phone.id}}{{/link-to}} 或者使用简写/非块版本:{{link-to phone.id "phone" phone.id}}
    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 2015-08-06
    • 2016-11-18
    • 2015-04-12
    • 2013-06-12
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多