javascript - handlebars.js #each 数组。使用第一项作为标题?

标签 javascript handlebars.js

我有以下数据:

var test = [];
test.push({typ: 'a', name="bur"});
test.push({typ: 'a', name="fur"});
test.push({typ: 'b', name="kok"});
test.push({typ: 'b', name="bur"});

我使用handlebars.js 渲染它,并在此模板中使用它:

{{#each .}}
  <div>
  <div>{{ name }}</div>
  </div> 
{{/each}}

效果很好,但我想将“typ”作为标题,如下所示:

<div class="head">a</div>
<div class="name">bur</div>
<div class="name">fur</div>
<div class="head">b</div>
<div class="name">kok</div>
<div class="name">bur</div>

但是我该怎么做呢?

最佳答案

为什么不变换你的对象并这样做:

JS:

var postProcessed = {};

test.forEach(function(val){ //Look for support of forEach you can just use for loop for older browser support if you are running this on the browser (Node should be fine).
    postProcessed[val.typ] = postProcessed[val.typ] || [];
    postProcessed[val.typ].push(val.name);
});
//{"a":["bur","fur"],"b":["kok","bur"]} 

模板:

{{#each .}}
     <div class="head">{{ @key }}</div>
     {{#each .}}
          <div class="name">{{ this }}</div>
     {{/each}}
{{/each}}

<强> Demo

您不能在 Handlebars 中做太多事情(尽管您有 Handlebars 助手并添加您自己的助手)。我建议您尝试调整模式和模板,并且主要以一对一的方式进行调整。

关于javascript - handlebars.js #each 数组。使用第一项作为标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364886/

相关文章:

javascript - 根据 innerWidth 属性更改元素宽度

javascript - grunt-contrib-handlebars 输出不同于 handlebars npm 任务

handlebars.js - 在 Rails Asset Pipeline 中使用带有 Marionette 的外部 Handlebars 模板

javascript - 如何从内联样式属性中获取值并将其放入最接近的输入值中? jQuery

Javascript - 通过键值从数组中删除对象

javascript - 如何在javascript中从回调响应数组中检索值

javascript - 未处理的 promise 拒绝警告 : MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError

javascript - 带 Handlebars 的 #each 之外的变量

sproutcore - 如何在Template CollectionView中获取索引?

javascript - 如何使用javascript中的每个方法排除对象中的空值