ここで何か間違ったことをしていますが、見えません!アンダースコアテンプレートで配列をループしようとしています。それは動作しませんが、何かが欠けています、ここに私のコードがあります、それ以外の場合は私のテンプレートはうまく動作します、それはバグである_.eachのものだけです:
<script type="text/template" id="PageContent">
<div class="col2">
<@ _.each([0,1,2,3,4], function(i) { @> <p><@ i @></p> <@ }); @>
</div>
</script>
また、次のようなテンプレート設定もいくつか行いました。
_.templateSettings = {
interpolate: /\<\@(.+?)\@\>/gim
};
カスタムテンプレート設定で補間正規表現のみを定義しているため、アンダースコアは式を評価するタイミングを認識しません。カスタムテンプレート設定を定義するときは、補間と評価を定義して区別する必要があります。アンダースコアtemplate()
ドキュメントから:
補間正規表現を定義し、(オプション)正規表現を評価して、それぞれ挿入および評価する必要がある式に一致させます。評価正規表現が提供されない場合、テンプレートは値の補間のみが可能になります。
標準(カスタム設定なし)テンプレートでは、違いは評価です:<% %>
および値の補間:<%= %>
。
したがって、たとえば、上記のテンプレートは(標準のテンプレート設定で)次のようになります。
<% _.each([0,1,2,3,4], function(i) { %> <p><%= i %></p> <% }); %>
カスタム設定を引き続き使用する場合は、_。templateSettingsで評価正規表現も定義する必要があります。あなたの質問やコメントに基づいて、次のようなものです:
_.templateSettings = {
interpolate: /\<\@\=(.+?)\@\>/gim,
evaluate: /\<\@(.+?)\@\>/gim
};
次に、テンプレートを更新して、コードブロックの周りの評価フォームと値の周りの補間フォームを使用します。
<script type="text/template" id="pageContent">
<div class="col2">
<@ _.each([0,1,2,3,4], function(i) { @> <p><@= i @></p> <@ }); @>
</div>
</script>