Ember Route model AdapterPopulatedRecordArray vs RecordArray

时间:2013-11-25 13:21:51

标签: ember.js ember-data

任何人都可以暗示ember / ember-data的内部工作原理:

在路径模型函数中,如果我使用contract.id值查询注释,则返回带有对象的AdapterPopulatedRecordArray对象。

Route返回AdapterPopulatedRecordArray:

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

但是如果我不查询注释,则返回带有对象的RecordArray对象。

Route返回RecordArray:

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

关键的区别在于RecordArray类型实时更新对模板的更改,而AdapterPopulatedRecordArray不是并且是不可变的。我的目标是使第一个查询中的对象实时更新并可变。

我正在使用Ember 1.2 / 1.1.2和最新的canary / beta3 Ember数据与Django Rest框架Ember数据适配器。提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

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

docs for #findQuery

  

此方法返回一个promise,一旦服务器返回,将使用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 })时,您是否还没有收到服务器响应?