Nyx*_*nyx 7 javascript jquery backbone.js underscore.js
我正在使用_.template()underscorejs和backbonejs 的功能.使用underscore.js v1.3.0时,我可以使用if如下所示的语句:
<script type="text/template" id="tpl_listing_list_item">
<% if(<%= address_2 %>){%>, <%= address_2 %><%}%>
</script>
Run Code Online (Sandbox Code Playgroud)
问题:更新到v1.3.3后,我Uncaught SyntaxError: Unexpected token ILLEGAL在Javascript控制台中收到错误.此功能已被删除吗?删除if代码可修复错误.如果它被删除了,还有另一种方法可以实现同样的目的吗?
在你的if陈述中,你已经逃脱了插值模式,所以这<%=是一个非法的角色.
当我在1.3.3的浏览器中使用它时,这可以工作
<script type="text/template" id="tpl_listing_list_item">
<% if(address_2){ %>, <%= address_2 %> <% } %>
</script>
Run Code Online (Sandbox Code Playgroud)
例:
var t = _.template('{% if(address_2){ %}, {{ address_2 }} {% } %}')
undefined
t({'address_2': 'test'});
", test "
Run Code Online (Sandbox Code Playgroud)
(我们使用JSP所以我们的模板标签{% %},{{ }}和{%- %}而不是默认值,所以原谅我的标签)
tkone是正确的,但对于像你这样的模板,你可以使用特殊print功能来清理你的标签:
您也可以
<%= ... %>.Run Code Online (Sandbox Code Playgroud)var compiled = _.template("<% print('Hello ' + epithet); %>"); compiled({epithet: "stooge"}); => "Hello stooge."
所以你可以减少这样的噪音:
<script type="text/template" id="tpl_listing_list_item">
<% if(address_2){ print(', ', address_2) } %>
</script>
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/UgATZ/
| 归档时间: |
|
| 查看次数: |
3945 次 |
| 最近记录: |