所有记录都是从商店中卸载的,但是当显示单个项目时,它不会在视图中更改。如果显示多个项目,则所有内容都会正确更新。
直播示例: http://emberjs.jsbin.com/mojase/2/edit?html,js,output
卸载所有项目时,singleItem也应该消失,但它没有。
答案 0 :(得分:2)
这是按预期工作的。
没有参数的 find
是商店中所有记录的实时集合,因此,当从商店中删除记录时,它将从该集合中删除。
find
是一条记录(除非你通过查询找到,但在这种情况下你不是),而Ember Data没有一种机制可以将你的引用撤回到宾语。同样,如果您在没有参数的情况下从find
调用中获取结果,并将其复制到数组中,则从存储中删除所有项目,该数组将不会被修改。
答案 1 :(得分:1)
我不相信你需要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