Проблемы с нокаутом вычисляются
У меня есть вычисляемая наблюдаемая:
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;
});
}