我一直在试验knockoutjs,重新设计现有的项目。
我当前的布局具有确定渲染的<div>
标记是第一项还是第四项的逻辑。
if (index % 4 == 0) addClass('omega');
if (index % 4 == 1) addClass('alpha');
有没有任何内置的敲除功能可以模板化类似的条件?
为您提供的几个选项:
-
当在KO中执行CCD_ 3时,正在进行添加CCD_。计划将其包含在KO 2.1中。拉取请求如下:https://github.com/SteveSanderson/knockout/pull/182
-
这里存在CCD_ 4绑定: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
中查找每个项目的索引要好。