【问题标题】:Issues with Knockout computed计算淘汰赛的问题
【发布时间】:2013-06-26 07:07:25
【问题描述】:

我有一个计算出来的 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 的所有元素都为真,它也总是返回假。 有什么想法吗?

【问题讨论】:

  • 还有其他问题,因为您的代码应该并且实际上它可以工作:jsfiddle.net/ELPJr。您能否在 JSFiddle 中发布更多上下文,也许是重现?

标签: javascript knockout.js computed-observable


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 2013-12-04
    • 2012-06-12
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多