javascript - 我不明白 Handlebars.js 自述文件中的这个 "block helpers"示例

标签 javascript ember.js handlebars.js

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

好吧,在“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}}”。我错过了什么?

其次,如果 block 助手收到一个“上下文”参数,那么为什么它不能像单标签助手一样使用它呢?为什么它不能说“context.id”而不是可怕的“this.get("id")”?我错过了什么?

我希望这看起来不像是在挑剔文档。比较和对比是我学会真正理解事物本质的方式。帮助我用理解代替困惑。 :)

最佳答案

我认为 README.md 中的示例已过时,存在问题 #234到今天仍然开放。

查看 http://handlebarsjs.com/block_helpers.html 中的 block 助手示例... 乍一看似乎是最新的。

关于javascript - 我不明白 Handlebars.js 自述文件中的这个 "block helpers"示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462381/

相关文章:

ember.js - ember.js 是否存在分页 mixin ?

mysql - 如何使用 Handlebars 在 html 中显示图像来自 MYSQL 作为 blob

internationalization - 如何使用 r.js 和 hbs.js 使用多个语言环境

javascript - 从 Ajax 查询中获取结果

javascript - Promise.resolve()和resolve()之间的区别?

javascript - Snapsvg 动画渐变移动

node.js - 无法在使用带有 NodeJS 的 Handlebars 的 View 中查找 View "index"

javascript - 如何将 HTML Div 与线条连接起来?

coffeescript - 在coffeescript中的函数末尾添加函数调用

javascript - 立即在 Ember.js 中渲染