Handlebars.js if ... else not working

时间:2014-11-28 11:26:44

标签: if-statement handlebars.js thorax.js

我的数组是:

[    {    status: failed    },    {    status: passed    }    ]

我的Handlebars.js模板的if ... else条件是:

<td><a class="{{#each status}} {{#if failed}} fail {{else}} pass {{/if}} {{/each}}"></a></td>

以上情况无效。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这里有很多事情要发生。首先,数组中的failedpassed是变量。他们是布尔,字符串还是其他?无论哪种方式,这些变量的值都会传递到您的模板,而不是它们的名称,因此{{#if failed}}无法正常工作,因为它正在查找名称为“failed”且不存在的变量。此外,数组中的每个对象都具有状态的,但{{#each status}}遍历名称为status的数组,因此也存在不匹配。

最后,我认为你的逻辑可能是错误的 - 如果这有效,它将有这个输出:

<td><a class="fail pass"></a></td>

因为你的循环在一个<a>元素内。我猜你想要每个状态都有一个单独的表格单元格。如果这是正确的,你需要这样的东西:

{{#each status}}<td><a class="{{#if failed}} fail {{else}} pass {{/if}}"></a></td>{{/each}}

具有如下数据结构:

{status: [{failed: true}, {failed: false}]}

就像在这个jsfiddle:http://jsfiddle.net/carpeliam/5fgr10gf/

相关问题