Block helper可以让你自定义迭代器和其他可以传入新的上下文的功能
基本块
Block helper的定义方法是:在一个mustache中,以#
开头,后面跟着helper的名称,然后对应的在一个mustache中以/
开头,加上相同的名称作为这个块的结尾。
形如:
{
{
#hello}}
{
{
item}}
{
{
/hello}}
在helper中,function接收一个hash参数options,而options有个fn方法,该方法可接收一个context参数来改变block中的上下文,返回一个类似于编译后的Handlebars模板,明确地说,就是一个字符串。
Handlebars.registerHelper('hello', function(options){
return options.fn(this);
});
在上面的代码中,我们给options.fn传入了一个新的上下文,这个新的context是this,就是代表当前的上下文,因此,如果当前的上下文是:
{
title: 'This is the title.',
body: 'body',
item: 'item'
}
那么block中的item标识符最终返回字符串'item'
注:以这种方式定义的helper,在模板中,可以使用path,如上面的{
{item}}
可以写成{
{./item}}
with helper(内置)
with helper会把传入的context直接调用,实现如下
Handlebars.registerHelper('with', function(context, options) {
return options.fn(context);
});
当处理json的时候用with比较方便
<div class="entry">
<h1>{
{
title}}</h1>
{
{
#with story}}
<div class="intro">{
{
{
intro}}}</div>
<div class="body">{