Handlebars学习(3)- Block Expressions
块表达式允许你定义helpers,该helpers调用一个有着与当前不同上下文的模板块。让我们看一下下面的helpers,它将会获得一个HTML列表:
{{#list people}}
{{firstName}}
{{lastName}}
{{/list}}
如果有上下文:
{
people: [
{firstName: "Yehuda", lastName: "Katz"},
{firstName: "Carl", lastName: "Lerche"},
{firstName: "Alan", lastName: "Johnson"}
]
}
我们将创建一个能够获得HTML列表的名称为list的helper。Helper接收people作为它的第一个参数,一个可选的hash作为第二个参数。可选hash包含一个名称为fn的属性,你可以在一个上下文中调用就像你调用一个正常的Handlebars模板。
Handlebars.registerHelper('list', function(items, options) {
var out = "<ul>";
for(var i=0, l=items.length; i<l; i++) {
out = out + "<li>" + options.fn(items[i]) + "</li>";
}
return out + "</ul>";
});
执行后,模板将会输出:
<ul>
<li>Yehuda Katz</li>
<li>Carl Lerche</li>
<li>Alan Johnson</li>
</ul>
块helpers有很多特性,像可以创建else代码片段(例如,在嵌入if helper中使用)的能力。 因为当你调用options.fn(context)时,一个块helper的上下文被转义,Handlebars不会转义一个块helper的结果。如果它转义了,内部的上下文需要被双重转义。

浙公网安备 33010602011771号