1

ember.jsアプリの特定のオブジェクトの検索をオーバーライドする必要があります。「単一の」ember-dataオブジェクトを返すことを計画している場合、以下に示すものはうまく機能しますが、オブジェクトの配列を返すようにこれを変更するにはどうすればよいですか(AdapterPopulatedRecordArrayまたはRecordArray(正直に言うと違いはわかりません)) 。

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 に答える