[英]deleteRecord in findAll() vs findQuery()
我只是遇到以下问题:在deleteRecord()
的模型上调用deleteRecord()
,该模型的content
是使用findQuery(<model name>, {})
在路由中设置的,即使deleteRecord
,也不会从ArrayController
删除该模型。成功了(我打电话给save
来save
操作)。 但是,当我将其切换为findAll()
,一切都按预期工作。 任何想法为什么会这样?
我正在使用Ember 1.4.0-beta.1 + canary.4ffecd62和Ember Data 1.0.0-beta.4 + canary.7af6fcb0。
find('type', {})
/ findQuery('type', {})
创建一个RecordArray。 findAll('type')
/ find('type')
实际上返回一个实时RecordArray,它具有商店中的所有当前记录。
为了更全面地了解这一点,在store all
/ filter
上还有另外两个方法返回Live RecordArrays,但它们不对服务器进行记录调用。 您可以将findAll('type')
/ find('type')
视为调用服务器然后调用all
方法的方法。
如果您愿意,可以根据findQuery
的结果创建过滤器,以作弊并获得类似的效果。
model: function() {
return this.get('store').find('color', {dummy:'data'});
},
setupController:function(controller, model){
var filter = this.store.filter('color', function(color){
return model.contains(color);
});
this._super(controller, filter);
},
为了在不创建其他过滤器的情况下获得所需的效果,您还可以在控制器中调用如下代码:
record.deleteRecord;
record.save(); // or record.destroyRecord() to combine the two calls
this.get('model').removeObject(record);
这将从两种类型的数组对象中删除已删除的记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.