代码之家  ›  专栏  ›  技术社区  ›  LAffair

Knockout JS inside table根据可见性折叠两列

  •  0
  • LAffair  · 技术社区  · 7 年前

    我在Knockout JS绑定方面很新,我有一个表,它应该是一行一列,如果 Confirmed 文本为空,两列以其他方式分开。

    <table class="table" id="Mytable" style="table-layout: fixed;">
           <tbody data-bind="foreach: info">
                  <tr>
                     <td style="vertical-align:middle;">
                         <button type="button" class="btn2 btn-default" data-bind="click:$root.getClick, trimText:shortName, trimTextLength: 5, css: Confirmed == '' ? colspan='2' : ''">22</button>
                     </td>
                     <td style="vertical-align:middle">
                          <span style="color:green" data-bind="text: Confirmed, visible: Confirmed != ''">10</span>
                     </td>
                  </tr>
            </tbody>
    </table>
    

    但它似乎没有正确显示信息,我不知道我做错了什么。

    1 回复  |  直到 7 年前
        1
  •  0
  •   user3297291    7 年前

    colspan 是一个属性,您可以使用 attr 结合:

     data-bind="attr: { 'colspan': Confirmed() ? 1 : 2 }"
    

    在你的特殊情况下,我会用虚拟的 if

    <table>
      <tbody data-bind="foreach: info">
        <tr>
          <!-- ko if: Confirmed -->
          <td colspan="2">
            <button type="button" 
                    data-bind="click:$root.getClick, trimText:shortName, trimTextLength: 5">22</button>
          </td>
          <!-- /ko -->
          <!-- ko ifnot: Confirmed -->
          <td></td>
          <td>
            <span data-bind="text: Confirmed"></span>
          </td>
          <!-- /ko -->
        </tr>
      </tbody>
    </table>
    推荐文章