handlebars.js - #each block和#block之间的区别

时间:2014-08-10 16:25:48

标签: javascript handlebars.js

这两个handlebars.js模板之间的区别是什么?

{{#myblock}}

  {{this}}

{{/myblock}}

{{#each myblock}}

  {{this}}

{{/each}}

鉴于没有为" myblock"定义帮助器,这两个模板(我可以看到)操作并输出相同的内容。除了可读性之外,两个模板之间是否有任何区别?

1 个答案:

答案 0 :(得分:0)

理解这一点的更简单方法是在哈希符号(#)是帮助程序之后出现的任何内容。辅助函数是把手调用可选参数的函数,这些参数是从模板中的辅助声明后面的函数派生的。

{{#each myblock}}

  {{this}}

{{/each}}

在#each的情况下,它调用迭代所提供的参数的函数' myblock'在这种情况下(几乎在所有情况下都是数组)并将输出为每个元素生成的内容。 成为该迭代中的每个元素。

同样在第一个例子中,myblock成为帮助者,因为它遵循#符号。

{{#myblock}}

  {{this}}

{{/myblock}}

现在由于没有名为myblock的预定义助手,您可以使用Handlebars.registerHelper()创建自定义助手,如下所示。

Handlebars.registerHelper('myblock', function(context, options) {
  return options.fn(context);
});