我一直在试验knockoutjs,重新修改现有项目。
我当前的布局有逻辑来确定呈现的<div>
标记是第一个还是第四个项目。
if (index % 4 == 0) addClass('omega');
if (index % 4 == 1) addClass('alpha');
是否有任何内置的敲门功能可以模拟类似的条件?
答案 0 :(得分:2)
为您提供的一些选择:
在KO中执行$index
时,正在进行工作以添加foreach
变量。这计划包含在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
更好。