テンプレート内でグローバルにアクセス可能な関数を呼び出すことができます。したがって、Globalize
がグローバル (つまり のプロパティwindow
) の場合、このテンプレートは次のようになります。
<script id="tmpl" type="text/html">
<li>Date: <%= Globalize.format(date, 'F') %></li>
</script>
この JavaScript で動作します。
_.template($('#tmpl').html(), {
date: some_date_that_globalize_understands
});
Globalize
グローバルに利用できない場合は、次のことができます。
window.Globalize = Globalize;
グローバルに利用できるようにするか、テンプレートの名前空間に手動で追加します。
_.template($('#tmpl').html(), {
Globalize: Globalize,
date: some_date_that_globalize_understands
});
デモ:
Globalize
を通じてグローバルwindow.Globalize
。.
- パラメータ
Globalize
によるローカル。_.template
.
Underscore テンプレートについて特別なことは何もありません。内部のものは、最終的にblock<%= %>
でラップされる JavaScript コードです。返されたテンプレート関数のプロパティを見ることで、関数のソースを確認することもできます。with
source
var t = _.template($('#t').html());
console.log(t.source);
次のような非常に単純な (醜い場合) JavaScript が表示されます。
function(obj){
var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};
with(obj||{}){
__p+='\n '+
( Globalize.mangle(pancakes) )+
'\n';
}
return __p;
}
その+ (Globalize.mangle(pancakes) )+
ビットが変換されるもの<%= Globalize.mangle(pancakes) %>
です。マジックも、 のコンテンツの特別な解析もありません<%= ... %>
。単純な (しかし効果的な) JavaScript への変換です。