我正在将underscorejs的_.template()函数与 Backbone js一起使用。当使用underscore.js v1.3.0时,我可以使用if语句,如下所示:

<script type="text/template" id="tpl_listing_list_item">
    <% if(<%= address_2 %>){%>, <%= address_2 %><%}%>
</script>

问题:更新到v1.3.3后,我在Javascript控制台中收到错误Uncaught SyntaxError: Unexpected token ILLEGAL。此功能是否已删除?删除if代码可修复该错误。如果将其删除,是否还有另一种方法可以实现相同目的?

最佳答案

if语句中,您已经转入插值模式,因此<%=是非法字符。

当我在浏览器中与1.3.3一起使用时,此方法有效

<script type="text/template" id="tpl_listing_list_item">
    <% if(address_2){ %>, <%= address_2 %> <% } %>
</script>

例:
var t = _.template('{% if(address_2){ %}, {{ address_2 }} {% } %}')
undefined
t({'address_2': 'test'});
", test "

(我们使用JSP,因此我们的模板标签是{% %}{{ }}{%- %}而不是默认标签,因此请原谅我的标签)

09-17 23:28