2012-06-27 2 views
9

Я хотел бы создать шаблон handlebars и использовать локальный помощник только для одного шаблона. Я знаю, как использовать 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}) 

Местные помощники переопределять глобальные. Так что если вы хотите each, if или других зарегистрированных глобальных хелперы просто расширить объект:

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

Спасибо! FYI, расширение 'Handlebars.helpers' не требуется. См. [This jsfiddle] (http://jsfiddle.net/4cdN7/). – edan

+0

в то время это было :) –

Смежные вопросы