Handlebars.js中集合(list)通过中括号的方式取值

2017/2/16 8:31:26   阅读:2070    发布者:2070

有这么一个需求,在一个table中,tr是通过each取值,
取出的值要与table标题相对应,如何实现?例如:

<table> 
  <thead> 
    <tr> 
    {{#each 标题集合,值举例[name,sex...]}} 
      {{this}} 
    {{/each}} 
       得到结果应是 
       <th>name</th> 
       <th>sex</th> 
    </tr> 
  </thead> 
 <tbody> 
  {{#each 内容集合,值举例[{name:’苏轼’,sex:’男’},{name:’李清照’,sex:’女’}...]}} 
      此时我想得到这样的数据,与标题想对应,该如何做呢? 
      <tr> 
         <td>苏轼</td> 
         <td></td> 
      </tr> 
      <tr> 
        <td>李清照</td> 
        <td></td> 
      </tr> 
    {{/each}} 
 </tbody> 
</table>

如果在JS中,我们可以通过list[key]的方式取值,但是handlebars
好像不支持这种方式,不知道是不是我自己没整明白

总之资料了找了半天,也没有找到合适的解决方案,于是乎,自己写吧,很简单。

Handlebars.registerHelper("getValueByKeyFromList", function(list, key, options){ 
    if(list && key && list[key]){ 
        return list[key]; 
    } 
    return; 
});

应用到上面table中就是

{{#each 内容集合,值举例[{name:’苏轼’,sex:’男’},{name:’李清照’,sex:’女’}...]}} 
    此时我想得到这样的数据,与标题想对应,该如何做呢? 
    <tr> 
      {{#each 标题集合,值举例[name,sex...]}} 
        <td>{{getValueByKeyFromList ../this this}}</td> 
        ../this 意为上一层集合的当前值 
        this  意为当前集合的当前值 
      {{/each}} 
    </tr> 
{{/each}}

有需要的朋友可以照着这方法试试,希望能帮到大家

【 微信扫一扫 】

文章分类

相关新闻

热门标签

企业网站  | 灯饰照明  | 机械设备  | 数码产品  | 贸易公司  | 酒类饮品  | 商务咨询  | 广告行业  | 家政行业  | 医疗  | 卫浴设备  | 厨具设备  | 模具  | 陶瓷用品  | 物流  | 房地产  | 办公家具  | 包装用品  | 家居用品  | 玩具礼品  | 电子电工  | 环保绿化  | 专业服务  | 服装纺织  | 建筑建材  | 旅游休闲  |