Ember.js 创建Ember.Object的数组

Ember.js 创建Ember.Object的数组,ember.js,amcharts,Ember.js,Amcharts,我相信这个基本问题有一个简单的解决方案,但坦率地说,我在Emberjs.com和Stackoverflow上都找不到它(也许我问错了问题) 我正在使用amChart库来绘制数据图表。amChart要求我传递一个“标准”对象数组。因此,我尝试使用toArray()方法将我的Ember.object转换为数组。但是我知道现在toArray()方法创建了一个Ember.objects数组,结果amChart找不到我在amChart中映射的属性 换句话说,我需要一个数组,该数组的属性可以通过常规java

我相信这个基本问题有一个简单的解决方案,但坦率地说,我在Emberjs.com和Stackoverflow上都找不到它(也许我问错了问题)

我正在使用amChart库来绘制数据图表。amChart要求我传递一个“标准”对象数组。因此,我尝试使用toArray()方法将我的Ember.object转换为数组。但是我知道现在toArray()方法创建了一个Ember.objects数组,结果amChart找不到我在amChart中映射的属性

换句话说,我需要一个数组,该数组的属性可以通过常规javascript语法(数组[1].attribute)而不是“object.get('attribute')”进行访问

或者我应该采取另一种方法

更新

根据下面的答案,我得出结论,我需要为amChart创建一个新数组:

  chartData: function() {
    var statVals = this.get('chapters.statVals');
    var statArray= statVals.toArray();
    var amCharts = [];
    var chartData = [];

    for (var i = 0; i < statArray.length; i++) {
        chartData.push({
            time: statArray[i].get('time'),
            value: statArray[i].get('value'),
        });
    }
    return chartData;
  }.property(),
chartData:function(){
var statVals=this.get('chapters.statVals');
var statArray=statVals.toArray();
var amCharts=[];
var chartData=[];
对于(var i=0;i

如果有人有更有效/更好的方法来解决这个问题,我很乐意修改这个解决方案。

我想说你有两个选择:

  • 避免在余烬对象中使用计算属性,因为无需使用
    get()
    ()即可访问正常属性。这应该像传递普通的JS对象(真正意义上的余烬对象)一样工作
  • 在对象上创建一个
    toJsObject()
    (或类似)将其转换为普通JS对象、计算属性和所有属性。例如:

    var Widget = Ember.Object.extend({
        toJsObject: function() {
            return {
                prop1: this.get('prop1'),
                prop2: this.get('prop2')
            };
        }
    });
    
    // ...
    
    var normalObjects = emberObjects.toArray().map(function(obj) {
        return obj.toJsObject();
    });
    

  • 你的数据看起来像什么?返回这个。getProperties('prop1','prop2')
    更干净。你是说不使用
    get()