【问题标题】:Handlebars lookup helper to build dynamic tablesHandlebars 查找助手以构建动态表
【发布时间】:2017-05-24 11:27:27
【问题描述】:

我想使用把手构建一个动态表格。我认为我必须使用查找助手来实现我想要的结果。我在使用查找帮助程序时遇到了一些问题,而且文档也很差。

我的对象示例如下所示:

{
headers:[
  0:"name",
  1:"brand",
  2:"type",
  3:"rating",
  4:"edited"
]
tableContent:[
  0:{
     contentName:{
        name:"Fanta",
        brand:"Coca-Cola Company",
        type:"Soda",
        rating:"3",
        edited:"2017-05-24"}
    }
]
}

车把模板:

<script id="itemTemplate" type="text/x-handlebars-template">
  <table id="table" class="bordered highlight centered">
    <thead>
      <tr>
        {{#headers}}
        <th>{{this}}</th>
        {{/headers}}
      </tr>
    </thead>
    <tbody>
      <tr>
        {{#each tableContent}}
        {{#each headers}}
        <td>{{lookup ../contentName headers}}</td>
        {{/each}}
        {{/each}}
      </tr>
    </tbody>
  </table>
</script>

我不能简单地做&lt;td&gt; contentName.name &lt;/td&gt;之类的原因是用户可以在数据库中创建自己的列,所以我无法事先知道属性名称。

【问题讨论】:

    标签: javascript html templates handlebars.js


    【解决方案1】:

    在您的对象中使用little modification,您可以使用ember-contextual-table

    这里是the twiddle

    示例代码:

    {{#data-table data=data.tableContent as |t|}}
      {{#each data.headers as |columnName|}}
        {{t.column propertyName=columnName name=columnName}}
      {{/each}}
    {{/data-table}}
    

    更新

    但如果你想让你的代码运行,这里是:

      <table class="bordered highlight centered">
        <thead>
          <tr>
            {{#each data.headers as |header|}}
            <th>{{header}}</th>
            {{/each}}
          </tr>
        </thead>
        <tbody>
          <tr>
            {{#each data.tableContent as |c|}}
              {{#each data.headers as |h|}}
              <td>{{get c h}}</td>
              {{/each}}
            {{/each}}
          </tr>
        </tbody>
      </table>
    

    看看this twiddle

    【讨论】:

    • 谢谢!猜猜我有一些阅读要做!我只是不了解查找帮助程序的工作原理,还是不能达到我需要的目的?
    • 使用get代替查找。然后,您可以通过对对象进行一些修改来使其工作。看看我帖子的更新代码。
    • 我没有,我意识到我用 ember 错误地标记了我的帖子,因此我仍在尝试让它与 handlebars.js 一起使用。很抱歉造成混乱!
    • handlebars.js 中没有“get”吗?还是只是众多未记录的功能之一?
    • 啊哈,这是我的错误,对不起。您可以使用Handlebars.registerHelper('get', function(obj, key) { return obj[key]; }); 定义它
    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多