Проблемы с нокаутом вычисляются

У меня есть вычисляемая наблюдаемая:

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;
});

Проблема в том, что он всегда возвращает false, даже если все элементы isFunctionDone имеют значение true. Есть идеи?

1 ответ

ko.utils.arrayForEach не все время корректно взаимодействует с ko.computed, будет лучше, если его заменит простой на. Также, возможно, у вас есть проблема в операторе 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;
    });
}
Другие вопросы по тегам