我是一个Ember.js菜鸟,正试图找出一些东西。这是我的ObjectController -
App.CommodityController = Ember.ObjectController.extend({
addedToCart: false,
actions: {
addToCart: function(commodity) {
this.addedToCart = true;
},
removeFromCart: function(commodity) {
this.addedToCart = false;
}
}
});
这是我的ArrayController -
App.CommoditiesController = Ember.ArrayController.extend({
inCart: function() {
return this.filterBy('addedToCart',true);
}.property('@each.addedToCart')
});
属性inCart
无法进行评估。事情是addedToCart
不在我的模型中 - 我确实观察到当我用模型中的某些东西测试它时它起作用了。
是否无法使其与不在模型中的属性一起使用?
答案 0 :(得分:0)
变化:
this.addedToCart = true;
要:
this.set('addedToCart', true);
或者您也可以这样做:
this.toggleProperty('addedToCart');
原因:直接设置属性不会触发驱动计算属性的任何更改观察者。使用set / get / toggle可以。 (更有经验的人可能会纠正我)
答案 1 :(得分:0)
是的,通过这样做。
.property('@each.addedToCart')
会查看自己的模型,即属性App.CommoditiesController
的{{1}}模型。
您只能在阵列上运行addedToCart
。
如果您希望能够访问@each
模型,则必须将其添加到App.CommodityController
数组中。