2013-06-26 40 views
0

我有一個計算觀察到:與淘汰賽的問題計算

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的所有elelments是真實的。 任何想法?

+0

其他的錯誤,因爲你的代碼應該和實際上它的工作:http://jsfiddle.net/ELPJr/。你可能會發布一些更多的上下文,也許在JSFiddle中有一個repro? – nemesv

回答

0

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