使用knockout条件语句仅渲染表列一次

时间:2014-09-24 17:53:56

标签: 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] === $parent[$root.childRecordKey] -->
                   <td>
                      <span data-bind="text: header"></span>
                   </td>
             <!-- /ko -->
            </tr>
   </tbody>

我想为所有行只渲染包含span元素的列一次。我无法消除上面使用的淘汰条件,因为它只为那些ID与父记录ID匹配的子记录呈现列。

1 个答案:

答案 0 :(得分:0)

很难理解你的问题,但听起来好像将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>

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