1

我试图让我的头脑围绕 Knockout 并遇到这种情况。

为什么这行不通??

计算使用:ko.utils.arrayForEach

http://jsfiddle.net/pradeepdhi/vX88g/

*删除以下内容的那一刻,它呈现没有任何错误(但当然也没有给出总数)

ko.utils.arrayForEach(this.children(), function(item) {
        total += parseFloat(ko.utils.unwrapObservable(item.age));
    });

任何帮助将非常感激!

4

1 回答 1

3

问题在于您的this范围。

检查这个工作小提琴

或者

this.totalAge = ko.computed(function() {
        var total = 0;
        ko.utils.arrayForEach(this.children(), function(item) {
            total += parseFloat(ko.utils.unwrapObservable(item.age));
        });
        return total;
}, this);

来自 ko文档

如果您想知道 ko.computed 的第二个参数是什么(我们在前面的代码中传递 this 的位),它在评估计算的 observable 时定义了 this 的值。如果不传递它,就不可能引用 this.children() [在你的情况下]。

于 2013-04-03T15:47:33.270 回答