17

underscore.jsで構築されたアプリのテンプレート内に変数を設定するにはどうすればよいbackbone.jsですか?再利用可能な処理済み文字列を作成したいだけです。また、underscore.jsの組み込み関数を_.escape使用してこれらの変数を処理できますか?

<script type="text/html" id="templateresults">

<p><%= encodeURIComponent(title) %></p> // this works

// try 1:
var encodedTitle = encodeURIComponent(title); // shows up as regular text
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text

// try 2:
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up
<p><% '+encodedTitle+' %></p> // nothing shows up

</script>

titleJSONアイテム(テキスト文字列)です。

エンコードされた出力:This%20is%20a%20Sample%20Title
通常の出力:This is a Sample Title

4

1 に答える 1

23

try 2はほぼ正しいですが、encodedTitleを出力するタグ=の先頭にがないため、文字列にを含める必要はありません+。する必要があります:

<p><%= encodedTitle %></p>

または、次のこともできます。

<p><% print(encodedTitle) %></p>

アンダースコアテンプレートでは、評価するJavaScriptが内部に含まれている必要がある<% %>ため、2回目の試行でJavaScriptが文字列として出力されるのはなぜですか。上部のサンプルで正しく使用し=ましたが、try2では省略しました。

=、囲まれたjavascriptの結果を文字列として出力するようにテンプレートエンジンに指示します。を使用しない場合=、javascriptは実行されますが、何も出力されません。アンダースコアのテンプレートは、print()を使用する代わりの機能を提供します=。一方の方法がもう一方の方法よりも優れているかどうかはわかりません。

于 2012-06-23T16:51:42.287 に答える