1

我需要在我的 ember.js 应用程序中覆盖对特定对象的查找。如果我打算返回一个“单个” ember-data 对象,那么我下面的内容非常有用,但是我将如何修改它以返回一个对象数组(这样我返回一个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;
    }
});
4

1 回答 1

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

于 2013-02-12T14:18:45.280 回答