Поскольку вы только определили регулярное выражение интерполяции в своих пользовательских настройках шаблона, подчеркивание не знает, когда оценивать выражения.Когда вы определяете пользовательские настройки шаблона, вы должны определить и провести различие между интерполяцией и оценкой.Из документации 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