2012-06-27 5 views
9

私はハンドルバーのテンプレートを作成し、その単一のテンプレートだけにローカルヘルパーを使用したいと思います。私は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}) 

現地ヘルパーはグローバル再定義します。

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

ありがとう:あなたはeachifまたはその他の登録グローバルヘルパーをしたいのであれば、単にオブジェクトを拡張! FYI、 'Handlebars.helpers'を拡張する必要はありません。 [this jsfiddle](http://jsfiddle.net/4cdN7/)を参照してください。その時の – edan

+0

はそれだった:) –

関連する問題