代码之家  ›  专栏  ›  技术社区  ›  Alex B

创建引导可折叠的手风琴表行,以显示来自flask sqlalchemy占位符的动态内容

  •  1
  • Alex B  · 技术社区  · 6 年前

    考虑下一个从 sqlite 数据库使用 flask sqlalchemy .

    在本例中,假设数据是发票列表,单击每一行将打开一个 collapsible bootstrap accordion 单击发票的详细信息。

    <table class="table table-hover" data-toggle="table">  
    <thead>
        <tr>
            <th>Date</th>
            <th>Invoice</th>         
        </tr>
    </thead>
    
    <tbody>
    <tr data-toggle="collapse" data-target="#accordion" class="clickable">
    {% for inv in invoices %}
       <td>
          {{ inv.number }}
       </td>
    </tr>
    <tr>
       <td>
          <div id="accordion" class="collapse">
             {{ inv.data }}
          </div>
       </td>
    </tr>
    {% endfor %}
    </body>
    </table>
    

    我认为问题在于data target=“#accordion”标记,它以折叠数据占位符的迭代为目标,而不是特定占位符本身。

    你可以在这里看到一个例子 Twitter Bootstrap Use collapse.js on table cells [Almost Done] http://jsfiddle.net/whytheday/2Dj7Y/11/ 但同样,内容是静态的,而不是动态的。

    解决方案是有一个与目标id匹配的“动态”数据目标标记,但我不知道如何做到这一点。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Alex B    6 年前

    要完成这项任务,你必须 将tr标签插入jinja循环 那么 到您的tr标签和 动态id collapsible bootstrap accordions ; 所以每个 tr 标签将指向相应的手风琴。代码应该是这样的:

    <tbody>
        {% for inv in invoices %}
            <tr data-toggle="collapse" data-target="#{{inv.number}}"  class="clickable">
                <td>
                    {{ inv.number }}
                </td>
            </tr>
            <tr id="{{inv.number}}" class="no-border collapse">
                <td>
                    <div>
                        {{ inv.data }}
                    </div>
                </td>
            </tr>
        {% endfor %}
    </tbody>
    

    这里的想法是,由于发票号码是唯一的,您将与 唯一ID . 因此,每个属性 你的 tr标签

    以防万一

    你会注意到我添加了这个类 no-border 第二 tr

    <style type="text/css">
        .table>tbody>tr.no-border>td{
            border-top: none;
        }
    </style>