ember.js – Ember Route模型AdapterPopulatedRecordArray vs RecordArray

任何人都可以暗示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和最新金丝雀/ beta3 Ember数据与Django Rest框架Ember数据适配器.提前感谢任何建议!

解决方法

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

docs for #findQuery

This method returns a promise,which is resolved with a RecordArray once the server returns.

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

一旦调用DS.AdapterPopulatedRecordArray#load,就会设置content属性,并且应该像RecordArray一样

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

当你看到this.store.find(‘comment’,{contract:1})时,你还没有收到服务器响应吗?

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...