2

我有一个寺庙,它使用一个代表所有数据的结构来呈现一个表格。

模板看起来像这样。

<div class="card shadow mb-4">
<div class="card-header py-3">
  <h6 class="m-0 font-weight-bold text-primary">DataTables Example</h6>
</div>
<div class="card-body">
  <div class="table-responsive">
    <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
      <thead>
        <tr>
          #for(colums in page.table.columns) {
              <th>#(colums)</th>
          }
        </tr>
      </thead>
      <tfoot>
        <tr>
          #for(colums in page.table.columns) {
              <th>#(colums)</th>
          }
        </tr>
      </tfoot>
      <tbody>
          #for(row in page.table.rows) {
            <tr>
            #for(data in row.datas) {
               <td>#(data)</td>
            }
            </tr>>
          }
      </tbody>
    </table>
  </div>
</div>
</div>

对于这种情况,这是可行的。但是,假设在另一页中我有不同的数据结构。所以不是page.table,但page.grid.table我怎样才能仍然使用这个模板?

我最初的想法是在嵌入模板之前更改使用的模板table.columns,而不是page.table.columns然后“分配”表变量。这样,如果您愿意,您也可以拥有多个表,只需table在嵌入之前重新分配。

我对网络开发不是很有经验,所以也许我只是想错了。

4

1 回答 1

2

如果您使用条件来检查变量是否存在,这将相当简单。

#if (page.table != nil) {
    #for(row in page.table.rows) {
        <tr>
             #for(data in row.datas) {
                 <td>#(data)</td>
             }
        </tr>>
    }
}else {
    #for(row in page.grid.table.rows) {
        <tr>
             #for(data in row.datas) {
                 <td>#(data)</td>
             }
        </tr>>
    }
}

这只是一个示例,您可以将代码多一点但基础相同,检查变量是否存在然后使用它。

编辑:例如,您可以使用存储相同类型变量的 Wrapper 类。在上面的代码中,你有一个我猜字符串的矩阵,你可以做这样的事情:

class Wrapper: Content {
   let table: [[String]]

   init(table: [[String]]){
       self.table = table
   }
}

然后如果你有 page.table 你把它转换成包装器,比如:

let wrapper = Wrapper(table: page.table)

// Or if you have page.grid.table
let wrapper = Wrapper(table: page.grid.table)

并像这样在蒸汽叶中使用它:

#for(row in wrapper.table) {
     <tr>
         #for(data in row.datas) {
              <td>#(data)</td>
         }
     </tr>>
}
于 2020-01-19T16:45:25.040 回答