我需要覆盖我的ember.js应用中特定对象的查找。如果我计划返回一个“单个”余烬数据对象,下面的内容非常有用,但是如何修改它以返回一个对象数组(这样我就会返回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;
}
});
答案 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