任何人都可以对 ember/ember-data 的内部运作给出一个提示:
在路由模型函数中,如果我使用 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 和 latest-canary/beta3 Ember Data 与 Django Rest Framework Ember-data Adapter 一起使用。提前感谢您的任何建议!
最佳答案
怎么看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被调用,内容属性被设置并且应该像一个 RecordArray
this.setProperties({
content: Ember.A(records),
isLoaded: true,
meta: meta
});
当您查看
this.store.find('comment', { contract: 1 })
时,您是否还没有收到服务器响应? ?
关于ember.js - Ember 路由模型 AdapterPopulatedRecordArray 与 RecordArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20194169/