https://github.com/wycats/handlebars.js/#registering-helpers
在之前的“注册助手”部分中,他们演示了如何创建单标签助手:
Handlebars.registerHelper('link_to', function(context) {
return "<a href='" + context.url + "'>" + context.body + "</a>";
});
{{#posts}} <li>{{{link_to this}}}</li> {{/posts}}
请注意,“context”被传入,他们可以通过说“context.url”、“context.body”等轻松访问它的属性。
https://github.com/wycats/handlebars.js/#block-helpers
好吧,在“块助手”部分,他们有一个类似的例子,但它似乎不必要地令人费解:
Handlebars.registerHelper('link', function(context, fn) {
return '<a href="/people/' + this.__get__("id") + '">' + fn(this) + '</a>';
});
{{#people}} <li>{{{#link}}}{{name}}{{/link}}</li> {{/people}}
首先,这次他们没有在开始标签中传递“this”,那么助手如何接收“context”参数?如果 Handlebars 自动传递它是为了方便,那么为什么它不为单标签助手也这样做呢?那么第一个示例可以只使用“{{link_to}}”而不是“{{link_to this}}”。我错过了什么?
其次,如果块助手接收到一个“上下文”参数,那么为什么它不能像单标签助手一样使用它呢?为什么它不能说“context.id”而不是可怕的“this”。得到(“id”)'?我错过了什么?
我希望这看起来不像是在文档中挑剔。比较和对比是我学会真正理解事物本质的方式。帮助我用理解代替困惑。:)