2012-06-27 4 views
9

Sadece bir şablon için bir handlebars şablonu oluşturmak ve yerel bir yardımcı kullanmak istiyorum. Tüm şablonlar için yardımcıları kaydetmek için Handlebars.registerHelper'ı nasıl kullanacağımı biliyorum, ancak yalnızca yerel şablon için buna ihtiyacım var. handlebars.js belgelere dayalı böyle (ExtJS XTemplates ile destekler ne benzer bir şey) ÖrneğinTek bir gidon şablonu için bir yardımcı kaydetmek mümkün mü?

şey:

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); 

bu mümkün mü yoksa tüm yardımcıları global kayıtlı olması gerekiyor?

cevap

11

kullanın bu sözdizimi:

template(context, {helpers: helpers}) 

Yerel yardımcıları küresel yeniden tanımlamak.

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

Teşekkür: Eğer each, if veya diğer kayıtlı küresel yardımcıları istiyorsanız Yani sadece nesneyi uzatmak! FYI, 'Handlebars.helpers' uzatma gerekli değildir. [Bu jsfiddle] 'a bakın (http://jsfiddle.net/4cdN7/). – edan

+0

o anda oldu :) –