您的自定义模板配置中只定义了插值正则表达式,因此underscore不知道何时评估表达式。当您定义自定义模板设置时,需要定义和区分插值和评估。根据underscore的
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