knockout 2:如何对可观察数组中的每个项执行计算值。

时间:2012-12-20 17:11:14

标签: arrays observablecollection knockout-2.0 computed-observable

嗨我有一个可观察的数组

this.item = ko.observableArray({
     tax: ko.observable(8.0);
     price: ko.observable(100.00);
     eachTotal:  ko.computed(function() {
           this.tax() * this.price();
     });
});

我收到错误说对象[Window]没有税法。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

我必须做的就是这个。

ko.utils.arrayForEach(myModel.item(), function(it) {
     it.eachTotal = ko.computed(function() {
        return it.tax() * it.price();
     });
});

我想知道这是否是最有效的方法呢?

答案 1 :(得分:1)

可能与您在javascript中的预期不符。这是来电者的背景 作为补救措施,通常会在构造函数的开头为此设置 self 或_ self
请在knockout再次查看示例,并注意 self

或者,如果 arrayForEach 的工作方式与underscore类似,则第三个参数是“此上下文”。