把手 - #if基于#each

时间:2017-07-31 06:50:55

标签: javascript handlebars.js

说我有以下数据:

[
  {
    id: 1,
    someFoo: true,
    things: [
      { blah: "bang" },
      { blah: "bing" }
    ]
  },
  {
    id: 2,
    someFoo: false,
    things: [
      { blah: "boop" },
      { blah: "barp" }
    ]
  }
]

在Handlebars中,如何在someFoo内检查{{#each things}}是否属实?

我试过了:

{{#each things}}
<p>{{blah}}</p>
{{#if ../someFoo}}<p>Yay!</p>{{/if}}
{{/each}}

没有运气。

编辑,抱歉看起来我的数组有点误导。实际用例是我有一张可能包含税的发票。所以,数据是这样的:

{
    tax: 0, // <-- this could be non-0, in which case should be "truthy"
    orders: [
        {words: 2, text: "some text", pay: 5.4},
        {words: 3, text: "some more text", pay: 7.8}
    ]
}

,模板是这样的:

<table class="clear">
  <thead>
    <tr>
      <th>Description</th>
      <th>Quantity</th>
      {{#if tax}}<th>PU HT</th>{{else}}<th>PU</th>{{/if}}
      {{#if tax}}<th>TVA</th>{{/if}}
      {{#if tax}}<th>Total HT</th>{{else}}<th>Total</th>{{/if}}
    </tr>
  </thead>
  <tbody>
    {{#each orders}}
    <tr>
      <td>Start of text: {{substring text}}...</td>
      <td align="right">1.00 U</td>
      <td align="right">{{accounting pay}}</td>
      {{#if ../tax}}<td align="right">20.00%</td>{{/if}}
      <td align="right">{{accounting pay}}</td>
   </tr>
   {{/each}}
  </tbody>
</table>

我的问题是{{#if}}以外的{{#each}},但不是内部的。{/ p>

2 个答案:

答案 0 :(得分:2)

除了数据上的其他循环外,您的代码段没有任何问题。

{{#each this}}
  {{#each things}}
    <p>{{blah}}</p>
    {{#if ../someFoo}}<p>Yay!</p>{{/if}}
  {{/each}}
{{/each}}

使用../

访问每个块的当前变量1级

答案 1 :(得分:1)

这就是我写它的方式,你会在这个中找到someFoo属性,因为它引用了每个的东西

{{#each things}}
<p>{{blah}}</p>
{{#if this.someFoo}}<p>Yay!</p>{{/if}}
{{/each}}