Html 使用knockout条件语句仅呈现表列一次

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] === $

我有两个收藏,父母和孩子。对于每一个父行,我都会根据父记录id等于子记录id的条件在html表中呈现子行。html如下所示:

   <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>

这可能有点偏差,代码未经测试,但它应该可以帮助您解决问题。

如果没有相应的视图模型代码,您的问题确实不清楚。请编辑您的问题,并确保代码中包含您的情况。