2012-06-27 3 views
9

핸들 막대 템플릿을 만들고 그 단일 템플릿에만 로컬 도우미를 사용하고 싶습니다. Handlebars.registerHelper를 사용하여 모든 템플릿에 도우미를 등록하는 방법을 알고 있지만이 템플릿은 로컬 템플릿에만 필요합니다. handlebars.js 문서에 따라이 같은 (ExtJS로는 XTemplates으로 지원하는 것과 비슷한) 예를 들어하나의 핸들 막대 템플릿에 도우미를 등록 할 수 있습니까?

뭔가 :

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

지역 헬퍼 글로벌 재정의.

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

감사합니다 : 당신이 each, if 또는 등록 된 다른 글로벌 헬퍼를 원한다면 단지 객체를 확장! 참고로, Handlebars.helpers를 확장 할 필요는 없습니다. [this jsfiddle] (http://jsfiddle.net/4cdN7/)을 참조하십시오. 그 당시의 – edan

+0

그것은 :) –

관련 문제