2012-06-27 6 views
9

Me gustaría crear una plantilla de manillar y usar un ayudante local para esa sola plantilla. Sé cómo usar Handlebars.registerHelper para registrar helpers para todas las plantillas, pero solo necesito esto para la plantilla local. (Algo similar a lo que es compatible con ExtJS con XTemplates)¿Es posible registrar un ayudante para una plantilla de manillar único?

Por ejemplo algo como esto en base a la documentación 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); 

Es esto posible o no todos los ayudantes tienen que estar registrado a nivel mundial?

Respuesta

11

Utilice esta sintaxis:

template(context, {helpers: helpers}) 

ayudantes locales redefinen global. Así que si quieres each, if u otros ayudantes globales registrados simplemente extender objeto:

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

Gracias! Para su información, no es necesario extender 'Handlebars.helpers'. Ver [este jsfiddle] (http://jsfiddle.net/4cdN7/). – edan

+0

en ese momento era :) –

Cuestiones relacionadas