Knockout计算的问题

时间:2013-06-26 07:07:26

标签: javascript knockout.js computed-observable

我有一个计算的observable:

passengerDocs.passengerDocsViewModel = function () {
var self = this;
self.isFunctionsDone = ko.observableArray([false, false, false, false, false, false, false]);
self.IsCompleted = ko.computed(function () {
    var isFinished = true;
    ko.utils.arrayForEach(self.isFunctionsDone(), function (x) {
        if (x == false) isFinished = false;
    });

    return isFinished;
});

问题是即使isFunctionDone的所有元素都为真,它总是返回false。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

ko.utils.arrayForEach并非所有时间都与ko.computed正确交互,如果将其替换为simple for会更好。此外,您可能在if语句中遇到问题,因为它只检查数组中的最后一个值。

function Model() {
    var self = this;
    self.isFunctionsDone = ko.observableArray([false, false, false, false, false, false, true]);

    self.IsCompleted = ko.computed(function () {
        for(var i = 0; i <= self.isFunctionsDone().length; i++)
             if (self.isFunctionsDone()[i] === false) 
                return false;
        return true;
    });
}