ember.js 如何从Ember中的模板中只将model[0]传递给组件?

wkftcu5l  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(193)

我只想将模型[0](第一个数据元素)从模板传递到组件。我有一个如下所示的路由文件:

/order.js
export default Route.extend({

  firstIndex: computed('data', {
    get(){
    return Ember.get(this,'data[0]');
    }
  }),

  model(params) {
    return fetch(`/api/salesrowmodel/${params.order_id}`)
    .then(resp => resp.json())
    .then(function(data) {
      return {
        data,
      };
    });
  },
});

FirstIndex是一个计算属性,用于返回数组的第一个索引数据。现在,在模板中,我想将第一个索引数据传递给一个组件:

/order.hbs

<div class="Revenue-values">{{order-detail data=firstIndex.revenueHeader}}</div>

我的示例模型数据如下:

[{
"OrderId": "406-5309498-5972326",
"revenueHeader": {
"Principal": 982.14,
"Product Tax": 117.86,
"Total": 1100
}},
{
"OrderId": "506-5234568-5934567",
"revenueHeader": {
"Principal": 382.54,
"Product Tax": 34.46,
"Total": 234
}}]

它显示正在将空值或未定义的对象传递到订单详细信息。请帮助我处理此错误。

lstz6jyr

lstz6jyr1#

首先,模板并没有绑定到路由,而是绑定到控制器,所以你需要把计算的属性移动到控制器。
下一个Ember.get(this,'data[0]');无效。您不能使用Ember.get来存取数值属性,因此也不能存取数组元素。相依性索引键computed('data',也可能应该是computed('data.[]',
然而,有一种简单得多的方法:

{{order-detail data=model.firstObject}}

因为Ember将firstObjectlastObject添加到数组中。

相关问题