2012-06-27 38 views
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); 

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

回答

11

使用此语法:

template(context, {helpers: helpers}) 

本地助手重新定义全球。所以如果你想eachif或其他注册的全球帮手只是扩展对象:

helpers = $.extend({}, Handlebars.helpers, helpers); 
template(context, {helpers: helpers}) 
+1

谢谢!仅供参考,延长'Handlebars.helpers'不是必要的。见[这jsfiddle](http://jsfiddle.net/4cdN7/)。当时是 – edan

+0

它是:) –