我使用this.store.push
从应用程序控制器将记录推送到商店(此操作是从应用程序控制器中初始化的套接字服务调用的),使用ember {{1我正在实现这个
2.2.1
这会将此新项目添加到商店中,但模板未更新以显示新项目,我也尝试添加此类内容
var newStoreRecord = this.store.push({
data: {
id: id,
type: 'cart',
attributes: newCartItem
}
});
假设我在控制器的顶部有this.get('cart.model').pushObject(newStoreRecord);
之类的东西,可能还有错误。
在购物车路线中,我的模型被定义为
cart: Ember.inject.controller(),
我不确定是否因为我没有使用模型挂钩而无法更新模板? (顺便说一句,我们没有使用模型钩子,因为Android上的性能不好我们宁愿用加载器加载一个空模板,然后加载数据而不是反过来。
答案 0 :(得分:1)
我有几点想法:
要具体回答您的问题,当您从商店设置变量时,就像您正在做的那样,它只会引用当时商店中中的内容。它不会自动更新。
最好的办法是向控制器添加两个新的计算属性:
items: Ember.computed(function() {
return this.store.peekAll('cart');
}),
// You'll need to flesh this one out further
filteredItems: Ember.computed('items.@each.auction_id', function() {
return this.get('items').filter(...);
})
在模板中引用filteredItems
,它应该有效。
旁注,我强烈建议重构一些事情。
setupController
挂钩代替didTransition
。它在模型钩子完成后运行,因此类似于你正在寻找的东西希望这会有所帮助。