2012-06-27 1 views
9

Vorrei creare un modello di manubri e utilizzare un helper locale solo per quel modello singolo. So come usare Handlebars.registerHelper per registrare gli helper per tutti i modelli, ma ho solo bisogno di questo per il modello locale. (Qualcosa di simile a quello che ExtJS supporta con XTemplates)È possibile registrare un helper per un modello di manubrio singolo?

Per esempio una cosa del genere sulla base della documentazione 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); 

Questo è possibile o non tutti i collaboratori devono essere registrate a livello globale?

risposta

11

Utilizzare questa sintassi:

template(context, {helpers: helpers}) 

aiutanti locali ridefiniscono globale. Quindi, se volete each, if o altri registrati aiutanti globali solo estendere oggetto:

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

Grazie! Cordiali saluti, estendere 'Handlebars.helpers' non è necessario. Vedi [questo jsfiddle] (http://jsfiddle.net/4cdN7/). – edan

+0

in quel momento era :) –