Поскольку вы определили только регулярное выражение интерполяции в настройках пользовательского шаблона, подчеркивание не знает, когда оценивать выражения. Когда вы определяете пользовательские настройки шаблона, вам необходимо определить и провести различие между интерполяцией и оценкой. Из документации подчеркивания 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>
источник: http://documentcloud.github.com/underscore/#template
person
mjtognetti
schedule
15.09.2011