假设我有下表适用于 bootstrap css 和淘汰赛:
<table style="cursor:pointer;" class="table table-striped table-bordered table-hover table-condensed">
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: name"></td>
</tr>
<tr data-bind="if: somecondition">
<td>test</td>
</tr>
</tbody>
</table>
现在如果我设置"somecondition"
回来"true"
,我可以看到结果表有斑马条纹。一切安好。但是,如果我将条件更改为“假”,显然该行会从屏幕上消失,但我根本看不到任何交替的行颜色。有人知道为什么以及如何显示交替的行颜色吗?
问题是淘汰赛if binding http://knockoutjs.com/documentation/if-binding.html不控制该元素是否是on是否存在,只是该元素是否存在content会存在或不存在。 (这在文档中并不那么清楚,但它is那里,主要是在“注意:在没有容器元素的情况下使用“if””少量)。所以if
在你的例子中将控制是否content of the tr
是存在的,但是tr
无论如何都会在那里,给你一个tr
其中绝对没有任何内容,这算作:nth-child
Bootstrap 条带化的工作,但不占用任何垂直空间。 (您可以通过渲染页面,然后右键单击表格并在任何现代浏览器中使用“检查元素”来查看 DOM 中的实际内容来查看这一点。)
要根据条件使整行存在/不存在,请用 KO 包装该行虚拟元素 http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html:
<!-- ko: if: somecondition -->
<tr>
<td>test</td>
</tr>
<!-- /ko -->
原始代码示例,未正确条带化:http://jsbin.com/tupusemu/1 http://jsbin.com/tupusemu/1
使用虚拟元素的示例,正确条带化:http://jsbin.com/tupusemu/2 http://jsbin.com/tupusemu/2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)