[英]Ember view doesn't update after store.unloadAll if single item is in model
所有记录均已从商店中卸载,但是在显示单个项目时视图中不会改变。 如果显示多个项目,则所有内容都会正确更新。
实时示例: http : //emberjs.jsbin.com/mojase/2/edit?html,js,output
当所有项目都卸载后,singleItem也应该消失,但事实并非如此。
这按预期工作。
find
没有参数的情况下, find
是商店中所有记录的实时集合,因此,当从商店中删除记录时,该记录也会从该集合中删除。
具有定义的参数的find
是一条记录(除非您通过查询找到,但在这种情况下不是),并且Ember Data没有用于撤消对对象的引用的机制。 同样,如果要从不带参数的find
调用中获取结果,并将其复制到数组中,然后从商店中删除所有项目,则该数组将不会被修改。
我不相信您需要RSVP.hash
:
重要说明:RSVP.hash适用于纯JavaScript对象,这些对象只是一组键和值。 RSVP.hash不会保留原型链。 http://emberjs.com/api/classes/RSVP.html#method_hash
您的模型应包含一个array of objects
或一个single object
,不能同时包含两者。 否则,模型本身将具有不必要的重复。
您可以将您的route model
与亚马逊进行比较: “我不知道为什么需要所有这些东西,但是您订购了它。 我向你保证,我会送他们的。 因此,请等到包裹到达为止。 然后您可以按自己的喜好过滤,订购,修改,..您的东西!” 。
您的页面逻辑进入了ApplicationController
,就像您的家一样,您的亚马逊资料到达了这里,您可以随意使用它。
因此在代码中:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return this.store.find("post");
}
});
App.ApplicationController = Ember.ArrayController.extend({
singlePost: function() {
return this.get('model').findBy('id', '1');
}.property('model.@each.id'),
actions: {
unload: function(){
this.store.unloadAll("post");
}
}
});
请注意 ,我使用ArrayController
是因为我要返回一个记录数组。 通过模型仅返回1条记录时,请使用Controller
。
工作jsbin: http ://emberjs.jsbin.com/zasorasido/1/edit?html,js,output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.