假设我执行以下请求:
App.Phones.find({'country' : 'DE'});
我的后端回复了一些电话号码。现在我这样做:
App.Phones.find({'country' : 'ES'});
现在我得到了其他电话号码。但:
App.Phones.all();
积累了“旧”号和新号。是否可以在调用查找之间清理商店?如何?
我试过了App.Phones.clean();
,没有成功(has no method 'clean'
)
编辑
这很奇怪,但是:record.destroy();
在一个对象上调用(如直觉像素所建议的那样)不会将其从商店中删除,它只是将其标记为destroyed=true
. 这意味着,下拉菜单仍显示该选项。实际上,遍历记录(all()
)表明记录被销毁后仍然存在。也许 Ember 最终会将它们从商店中删除,但这对我完全没有帮助:因为我的 select 绑定到all()
,所以我需要立即删除它们。
更糟糕的是:由于对象存在,但已销毁,选择显示它,但不允许选择它!
我可以想到一个非常丑陋的 hack,我在其中创建了一个Ember.A
过滤记录(删除destroy
ed 记录),如下所示:
- 销毁所有记录(旧的)
- 从后端请求新记录
- 收到记录后(
.then
),遍历存储中的记录(.all()
),即销毁的和新的。 - 添加数组中未
destroy
编辑的记录 - 将选择绑定到此过滤后的数组。
这看起来非常难看,我真的很惊讶 Ember 不能完全可靠地清理存储以获取某种记录类型。