把手#each在#if问题中

时间:2014-03-19 14:56:28

标签: handlebars.js

我有一个#if条件,我测试的是假的,但无论如何它都会进入。这是Handlebar脚本:

{{#each this.properties}}
    <span class="values">
        {{#if is-object-property}}
            {{#each values}}
                <span class="value" style="color:blue;">{{this}}</span>
            {{/each}}
        {{else}}
            {{#each values}}
                <span class="value">{{this}}</span>
            {{/each}}
        {{/if}}
    </span>
{{/each}}

问题是,我所显示的只是蓝色而我的对象看起来像是:

properties: Array[3]
 0: Object
  code: "pays"
  reliability: 100
  values: Array[1]
 1: Object
  code: "pnb"
  reliability: 100
  values: Array[1]
 2: Object
  code: "source"
  is-object-property: "true"
  reliability: 100
  values: Array[2]

正如您所看到的,除对象2外,对象0和1的undefined结果应为is-object-property。他们确实有这样的结果,这就是为什么我不明白为什么我全都是蓝色的。

我认为它已进入条件状态,但是它在把手网站上写道:“你可以使用if帮助器有条件地渲染一个块。如果它的参数返回falseundefined,{ {1}},null""(“虚假”值),Handlebars不会渲染该块。“

(参见http://handlebarsjs.com/上的“if block helper”)

1 个答案:

答案 0 :(得分:0)

这解决了这个问题:

<span class="values">
    {{#each values}}
        {{#if ../is-object-property}}
            <span class="value" style="color:blue;">{{this}}</span>
        {{else}}
            <span class="value">{{this}}</span>
        {{/if}}
    {{/each}}
</span>