2013-11-25 77 views
7

谁能给出余烬/烬数据的内部工作的提示:灰烬路径模型AdapterPopulatedRecordArray VS RecordArray

在路径模型函数,如果我查询与contract.id注释值的AdapterPopulatedRecordArray对象与返回的对象。

路线返回AdapterPopulatedRecordArray:

model: function() { 
    return this.store.find('comment', { contract: 1 }); 
}, 

但是,如果我不查询的意见与对象返回RecordArray对象。

路线返回RecordArray:

model: function() { 
    return this.store.find('comment'); 
}, 

关键的区别是,RecordArray型实时更新更改模板和AdapterPopulatedRecordArray不和是不可改变的。我的目标是从第一个查询实时更新和可变的对象。

我使用Ember 1.2/1.1.2和最新的canary/beta3 Ember Data与Django Rest Framework Ember-data Adapter。预先感谢您的任何建议!

+0

是的你是对的。但是你总是可以修改AdapterPopulatedRecordArray中的响应。不要在模型中立即返回这个数组,而是以任何你喜欢的形式处理它,然后返回。 – Sangram

回答

0

看看Store#find works,this.store.find('comment', { contract: 1 })将如何调用Store#findQuery。

docs for #findQuery

该方法返回一个承诺,这是一个RecordArray一旦服务器返回解决。

// #_findQuery 
return resolve(promise).then(function(payload) { 
    payload = serializer.extract(store, type, payload, null, 'findAll'); 
    // ... 
    recordArray.load(payload); 
    return recordArray; 

一旦DS.AdapterPopulatedRecordArray#load被调用时,内容属性设置,并应像一个RecordArray

this.setProperties({ 
    content: Ember.A(records), 
    isLoaded: true, 
    meta: meta 
}); 

你没有得到服务器响应,然而,当你在看this.store.find('comment', { contract: 1 })

+0

从我收集他得到的回应,但它不是实时更新任何进一步的记录。 – Craicerjack