【问题标题】:Calling Ember Model in Computed Property returns incorrect array在计算属性中调用 Ember 模型返回不正确的数组
【发布时间】:2018-06-23 21:44:20
【问题描述】:

我正在尝试格式化保存在 Ember 模型中的数据,以便可以将其插入图表组件。

路线代码:

import Route from '@ember/routing/route';
export default Route.extend({
  model() {
      let dateFrom = this.paramsFor('dashboard').dateFrom
      let dateTo = this.paramsFor('dashboard').dateTo
      let hash = {dateFrom, dateTo}
  return Ember.RSVP.hash({
    custakelist: this.get('store').query('custakelist', hash),
    barchart: this.get('store').query('barchart', hash),
      });
},

setupController(controller, models) {
  this._super(controller, models);
  controller.set('barchart', models.barchart);
  controller.set('custakelist', models.custakelist);
},

控制器代码:

import Controller from '@ember/controller';
import groupBy from 'ember-group-by';
export default Controller.extend({
  entriesByDate: groupBy('custakelist', 'take_list_date'),
  entriesByAge: groupBy('custakelist', 'patient_age'),

  wardData: Ember.computed.map('entriesByDate', function(group) {
      return {
      label: group.value,
      count: group.items.length
    };
  }),

  ageData: Ember.computed.map('entriesByAge', function(group) {
      return {
      label: group.value,
      count: group.items.length
    };
  }),

  clerkData: Ember.computed.map('barchart', function(barchart) {
      return {
      label: barchart.label,
      count: barchart.count
    };
  }),

});

感谢 Ember Data,我知道模型已正确加载到页面上。我也知道其他图表正在使用“custakelist”模型。

当我尝试使用模型“条形图”并将结果记录到控制台时,我可以看到创建了一个具有正确数量的项目但它们不包含任何值的数组,它们只是显示如下:

0:{标签:计算属性,计数:计算属性}

如何使根据我的模型已加载的数据在此上下文中可用?

【问题讨论】:

  • 不要使用group.value,而是尝试调用get作为计算属性,例如Ember.get(group, 'label')

标签: ember.js ember-data


【解决方案1】:

我通过使用 forEach 迭代模型并将结果放入准备插入图表的新数组来解决这个问题:

clerkData: Ember.computed('barchart', function(test) {
let newArray = []

this.get('barchart').forEach(function(x) {
let newLabel = moment(x.data.label).format("MMM Do YY")
let newCount = x.data.count

let newData =  {label:newLabel, count:newCount}

newArray.push(newData)

})
return newArray

}),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 2014-06-18
    • 1970-01-01
    • 2014-01-07
    • 2014-10-09
    • 2017-04-11
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多