如何手动创建一个ember-data对象数组?

时间:2013-02-12 13:02:59

标签: ember.js ember-data

我需要覆盖我的ember.js应用中特定对象的查找。如果我计划返回一个“单个”余烬数据对象,下面的内容非常有用,但是如何修改它以返回一个对象数组(这样我就会返回AdapterPopulatedRecordArrayRecordArray (不确定区别是否诚实))。

App.Foo = DS.Model.extend({
  name: DS.attr('string')
}).reopenClass({                                                                                                                       
    find: function() {
        var result = Ember.Object.create({
          isLoaded: false
        });

        $.getJSON('/api/foos/', function(data) {
          result.setProperties(data);
          result.set('isLoaded', true);
        });

        return result;
    }
});

1 个答案:

答案 0 :(得分:2)

您可以按如下方式返回数组:

App.Foo = DS.Model.extend({
    name: DS.attr('string')
}).reopenClass({
    records: [],
    find: function() {
        var self = this;
        $.getJSON('/api/foos/', function(response) {
            response.forEach(function(record){
                self.records.addObject(App.Foo.createRecord(record))                                                           
            }, this)
        });
        return this.records;
    }
});

此示例(改编自http://trek.github.com/)返回一个简单数组。要返回记录数组(或适配器填充的记录数组) 需要更多的工作,但它是相同的基本模式。请查看此测试,了解所需内容的详细信息:

https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/record_array_test.js