0
我一直在嘗試使用knockoutjs,修改現有項目。使用knockoutjs對每個第n個模板元素應用一個類
我當前的佈局有邏輯來確定呈現的<div>
標記是第一個還是第四個項目。
if (index % 4 == 0) addClass('omega');
if (index % 4 == 1) addClass('alpha');
是否有任何可以模擬類似條件的基因敲除內置功能?
我一直在嘗試使用knockoutjs,修改現有項目。使用knockoutjs對每個第n個模板元素應用一個類
我當前的佈局有邏輯來確定呈現的<div>
標記是第一個還是第四個項目。
if (index % 4 == 0) addClass('omega');
if (index % 4 == 1) addClass('alpha');
是否有任何可以模擬類似條件的基因敲除內置功能?
你有幾個選項:
有正在做在做KO一個foreach
時添加一個$index
變量工作。預計將包含在KO 2.1中。請求的要求如下:https://github.com/SteveSanderson/knockout/pull/182
這裏有一個repeat
綁定:https://github.com/mbest/knockout-repeat可以讓您更好地訪問實際的索引。
如果您使用的是observableArray,那麼有一種簡單的方法可以爲每個項目創建一個索引。
它應該是這樣的:
//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
裏面每次查找每個項目的索引要好。
謝謝,我以前看過這些索引選項。我認爲我的問題是,我期望模板根據observableArray項目刪除來更改CSS。 – 2012-03-19 18:03:29
隨着數組被操作(通過observableArray方法),索引將被重新構建,所以當您刪除一個項目時,索引將會更新。 – 2012-03-19 18:07:26