Html 使用knockout条件语句仅呈现表列一次
我有两个收藏,父母和孩子。对于每一个父行,我都会根据父记录id等于子记录id的条件在html表中呈现子行。html如下所示:Html 使用knockout条件语句仅呈现表列一次,html,knockout.js,conditional-statements,Html,Knockout.js,Conditional Statements,我有两个收藏,父母和孩子。对于每一个父行,我都会根据父记录id等于子记录id的条件在html表中呈现子行。html如下所示: <tbody data-bind="foreach: $root.subGridRows"> <tr data-bind="foreach: $root.subGridColumns"> <!-- ko if: $parents[1][$root.parentRecordKey] === $
<tbody data-bind="foreach: $root.subGridRows">
<tr data-bind="foreach: $root.subGridColumns">
<!-- ko if: $parents[1][$root.parentRecordKey] === $parent[$root.childRecordKey] -->
<td>
<span data-bind="text: header"></span>
</td>
<!-- /ko -->
</tr>
</tbody>
我想对所有行只渲染一次包含span元素的列。我无法消除上面使用的淘汰条件,因为这只会为ID与父记录ID匹配的子记录呈现列。很难理解您的问题,但听起来好像将foreach移出tr并移入其自己的虚拟foreach可以解决您的问题。例如:
<tbody data-bind="foreach: $root.subGridRows">
<tr>
<td data-bind="if: $parent[$root.parentRecordKey] === $data[$root.childRecordKey]">
<span data-bind="text: header"></span>
</td>
<!-- foreach: $root.subGridColumns -->
<td>Display other columns here</td>
<!-- /ko -->
</tr>
</tbody>
这可能有点偏差,代码未经测试,但它应该可以帮助您解决问题。如果没有相应的视图模型代码,您的问题确实不清楚。请编辑您的问题,并确保代码中包含您的情况。