我正在尝试在把手中使用@index,如下所示:
<script id="some-template" type="text/x-handlebars-template">
<form class = "pod" action="#" method="post">
<table>
<thead>
<th>Name</th>
<th>shipment</th>
<th>Button</th>
</thead>
<tbody>
{{#each objects}}
<tr>
<td>{{name}}</td>
<td> <input type="text" id="Shipment" name={{join 'Shipment' name}} /> </td>
<td> <input type="submit" name="actionButton" value = "update" > </td>
{{#if @index == 2 }}
<td>
<a href ="http://www.datatables.net/examples/api/select_single_row.html{{name}}"> {{name}} </a>
</td>
<td> </td>
{{/if}}
{{/each}}
</tbody>
</table>
</form>
</script>
但是我的if条件似乎没有起作用。谁能告诉我我做错了什么?
答案 0 :(得分:0)
不幸的是,您无法在没有自定义帮助程序的情况下在Handlebars中进行比较。
我无法回想起我发现这个功能的地方,但是我在节点/快速脚本中使用了一个副本来根据条件设置类:
<强> app.js 强>
var hbs = require('hbs');
hbs.registerHelper('ifCond', function (v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
});
hbs模板
<div class="{{#ifCond this.order.pushed '==' 'true'}}text-green{{/ifCond}}">Order Status - {{this.order.pushedMessage}}</div>