使用敲除foreach每隔2条记录创建一个新行
Create new row every 2 records using knockout foreach
我正试图使用淘汰虚拟元素,每两条记录创建一个新行。我的问题是奇数记录不会在两个偶数索引之间生成。
这是我的源HTML
<!--ko foreach:UDGroupboxes-->
<!--ko if:$index()%2==0 || $index()==0-->
<div class="row-fluid">
<!--/ko-->
<div class="panel form-horizontal span6">
<div class="panel-heading"><span data-bind="text:$data.Caption"></span></div>
</div>
<!--ko if:$index%2()!=0 && $index()!=0-->
</div>
<!--/ko-->
<!--/ko-->
输出HTML
<div data-bind="attr:{id:Name}" class="tab-pane active" id="Tabsheet1">
<!--ko foreach:UDGroupboxes-->
<!--ko if:$index()%2==0 || $index()==0-->
<div class="row-fluid">
<!--/ko-->
<div class="panel form-horizontal span6">
<div class="panel-heading"><span data-bind="text:$data.Caption"></span></div>
</div>
<!--ko if:$index%2()!=0&&$index()!=0-->
</div>
<!--/ko-->
<!--ko if:$index()%2==0 || $index()==0--><!--/ko-->
<!--ko if:$index()%2==0 || $index()==0-->
<div class="row-fluid">
<!--/ko-->
<div class="panel form-horizontal span6">
<div class="panel-heading"><span data-bind="text:$data.Caption"></span></div>
</div>
<!--ko if:$index()%2!=0&&$index()!=0-->
</div>
<!--/ko-->
<!--/ko-->
</div>
无论条件如何,都应生成面板。该条件仅决定在偶数上打开新行,并在赔率上关闭该行。
Knockout绑定只发生在元素上,虚拟元素也必须遵守元素层次结构。如果我们以您的例子为例,使用缩进来显示元素关系,它看起来像这样:
<!--ko foreach:UDGroupboxes-->
<!--ko if:$index()%2==0-->
<div class="row-fluid">
<!--/ko-->
<div class="panel form-horizontal span6">
<div class="panel-heading"><span data-bind="text:$data.Caption"></span></div>
</div>
<!--ko if:$index()%2!=0-->
</div>
<!--/ko-->
<!--/ko-->
Knockout会忽略div
中的关闭和打开虚拟标记。因此,以上只是输出其他项目的效果。
以下是在Knockout中对数组项进行分组的好答案:https://stackoverflow.com/a/10577599/1287183
您最好使用多维数组提供knockout。这是一个更清洁的解决方案,不太可能产生奇怪的结果。
查看示例2:注意3:在文档中:http://knockoutjs.com/documentation/foreach-binding.html
<ul data-bind="foreach: { data: categories, as: 'category' }">
<li>
<ul data-bind="foreach: { data: items, as: 'item' }">
<li>
<span data-bind="text: category.name"></span>:
<span data-bind="text: item"></span>
</li>
</ul>
</li>
</ul>
<script>
var viewModel = {
categories: ko.observableArray([
{ name: 'Fruit', items: [ 'Apple', 'Orange', 'Banana' ] },
{ name: 'Vegetables', items: [ 'Celery', 'Corn', 'Spinach' ] }
])
};
ko.applyBindings(viewModel);
</script>
相关文章:
- 如何从rails中的代码中删除新行( )
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 如何在脚本上添加新行
- 在不刷新整个网格的情况下,向Asp.net网格视图添加新行
- 字符串中的
标记未正确在 HTML 中创建新行 - 为什么文本在 li 标签中开始一个新行
- MySQL检索数据,为每个数据附加一个新行
- 如何在 ng-repeat 中的某个特定索引上开始一个新行
- 使用敲除foreach每隔2条记录创建一个新行
- Regex-任何一个或多个字符后面跟一个新行和等号
- JavaScript在HTML中创建新行,onclick将值粘贴在另一个的下面
- Angularjs ng-repeat为每个第4项开始一个新行
- 如何获取一行并将该行和文本字符串合并为一个新行
- 对于变量中的每一个新行,添加一个连字符
- 在JQuery .html()调用中包含一个Twig模板并删除新行
- 在最后一个输入字段中添加新行onkeyup
- 我怎样才能得到一个变量的内容直到第一个新行
- 使用 string.prototype 在每个第 8 个逗号之后创建一个新行
- 如何在最后一个表格行上插入新行
- 如何传递带有一个或多个嵌入的新行代码的字符串