Knockout.js 每个罐的淘汰赛';在if之后看不到$index

Knockout.js 每个罐的淘汰赛';在if之后看不到$index,knockout.js,Knockout.js,我有这样的代码: <!-- ko foreach: Items --> <!-- ko if: $index() % 3 == 0 --> <div class="row"> <h1 data-bind="text: $index()"></h1> <!-- /ko -->

我有这样的代码:

        <!-- ko foreach: Items -->
            <!-- ko if: $index() % 3 == 0 -->
                <div class="row">
                <h1 data-bind="text: $index()"></h1>
            <!-- /ko -->
                <div class="col-md-4 item">
                    <h1 data-bind="text: $index()"></h1>
                </div>
            <!-- ko if: $index() % 3 == 2 -->
                </div>
            <!-- /ko -->
        <!-- /ko-->


我只想在每个行中包含三个项目。但
$index
值仅在第一个
if
中可见。我不明白为什么。有人能帮忙吗?

Knockout并不一定要在模板中运行,而是从标记中声明性地构建DOM。因此,单独为开始/结束标记使用
ko if
虚拟绑定将不起作用

同样,您不能在html中执行此操作:

某些具有锯齿形开始/结束标记的文本。
strong
/strong
替换为
ko if
/ko if
,你会感觉到为什么这样做效果不好

你需要找到另一种完全符合你意愿的方式。这里有一个:

函数Vm(){
var self=这个;
自身项目=可观察到的ko值([1,2,3,4,5,6,7]);
self.GroupedItems=ko.computed(函数(){
var a=self.Items(),数组=[],大小=3;
而(a.length>0)数组。push(a.splice(0,size));
返回阵列;
});
}
应用绑定(新Vm())
.row{display:block;}
.col-md-4{显示:内联块;填充:5px;背景:银色;}

Knockout不会强制在模板中运行,而是以声明方式从标记构建DOM。因此,单独为开始/结束标记使用
ko if
虚拟绑定将不起作用

同样,您不能在html中执行此操作:

某些具有锯齿形开始/结束标记的文本。
strong
/strong
替换为
ko if
/ko if
,你会感觉到为什么这样做效果不好

你需要找到另一种完全符合你意愿的方式。这里有一个:

函数Vm(){
var self=这个;
自身项目=可观察到的ko值([1,2,3,4,5,6,7]);
self.GroupedItems=ko.computed(函数(){
var a=self.Items(),数组=[],大小=3;
而(a.length>0)数组。push(a.splice(0,size));
返回阵列;
});
}
应用绑定(新Vm())
.row{display:block;}
.col-md-4{显示:内联块;填充:5px;背景:银色;}


如果仅关闭
标签,则第二个
是否有效?只有第一个标签有效。在第一次
之后不再工作
$index
是您的第二次
如果
仅关闭
标签?只有第一次工作。第一次
之后不再工作
$index