Emberjs:可以通过模型中没有的东西计算属性吗?

时间:2014-03-26 19:27:04

标签: javascript web-applications ember.js

我是一个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不在我的模型中 - 我确实观察到当我用模型中的某些东西测试它时它起作用了。

是否无法使其与不在模型中的属性一起使用?

2 个答案:

答案 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数组中。