2012-03-18 51 views

回答

2

你有幾個選項:

它應該是這樣的:

//track an index on items in an observableArray 
ko.observableArray.fn.indexed = function() { 
    //whenever the array changes, make one loop to update the index on each 
    this.subscribe(function(newValue) { 
     if (newValue) { 
      var item; 
      for (var i = 0, j = newValue.length; i < j; i++) { 
       item = newValue[i]; 
       if (!ko.isObservable(item.$index)) { 
        item.$index = ko.observable(); 
       } 
       item.$index(i);  
      } 
     } 
    }); 

    this.valueHasMutated(); 
    return this; 
}; 

你會初始化observableArray被編入索引,如:

this.myArray = ko.observableArray().indexed(); 

現在,當觀察到的數組操作,這將需要一個通過項目並更正索引。這比在你的foreach裏面每次查找每個項目的索引要好。

+0

謝謝,我以前看過這些索引選項。我認爲我的問題是,我期望模板根據observableArray項目刪除來更改CSS。 – 2012-03-19 18:03:29

+0

隨着數組被操作(通過observableArray方法),索引將被重新構建,所以當您刪除一個項目時,索引將會更新。 – 2012-03-19 18:07:26

相關問題