使用knockoutjs将一个类应用于每个第n个模板元素



我一直在试验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中查找每个项目的索引要好。

最新更新