9

我想创建一个车把模板并为该单个模板使用本地助手。我知道如何使用 Handlebars.registerHelper 为所有模板注册助手,但我只需要本地模板。(类似于 ExtJS 支持 XTemplates 的东西)

例如,基于 handlebars.js 文档的类似内容:

var context = { posts: [{url: "/hello-world", body: "Hello World!"}] };
var source = "<ul>{{#posts}}<li>{{{link_to this}}}</li>{{/posts}}</ul>"

var template = Handlebars.compile(source, {
   link_to: function(context) {
       return "<a href='" + context.url + "'>" + context.body + "</a>";
   }
);
template(context);

这是可能的还是所有助手都必须在全球范围内注册?

4

1 回答 1

11

使用此语法:

template(context, {helpers: helpers})

本地助手重新定义了全局。因此,如果您愿意eachif或者其他已注册的全局助手只需扩展对象:

helpers = $.extend({}, Handlebars.helpers, helpers);
template(context, {helpers: helpers})
于 2012-06-28T15:36:21.923 回答