9

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

これは可能ですか、それともすべてのヘルパーをグローバルに登録する必要がありますか?

4

1 に答える 1

11

次の構文を使用します。

template(context, {helpers: helpers})

ローカルヘルパーはグローバルを再定義します。したがって、必要に応じてeachifまたは他の登録済みグローバルヘルパーは、オブジェクトを拡張するだけです。

helpers = $.extend({}, Handlebars.helpers, helpers);
template(context, {helpers: helpers})
于 2012-06-28T15:36:21.923 に答える