我有我送入渲染骨干视图Backbone.js的/ underscore.js模板。 视图是通过包含数组模型posts
对象(我称之为post
的模板)。
问题 :当我在阵列中的所有元素尽量循环posts
,我得到一个错误Uncaught SyntaxError: Unexpected token )
,是指在骨干视图的一行代码template: _.template( $('#tpl_SetView').html() )
我做了错误的循环,这是造成这个错误?
模板代码
<script type="text/template" id="tpl_SetView">
<div class="row_4">
<div class="photo_container">
<div class="set_cover">
<img src="/<%= posts[0].thumb_subpath %><%= posts[0].img_filename %>" width=240 />
</div>
<div class="set_thumbs">
<%= _.each(posts, function(post) { %>
<img src="<%= post.thumb_subpath %><%= posts.img_filename %>" width=55 />
<%= }); %>
</div>
</div>
</div>
</script>
呼应可变使用<%= %>
,但是解析JavaScript代码,只需要使用<% %>
。
例如:
// In your Backbone View
var posts = {"posts": this.model.toJSON()};
var template = _.template($("#tpl_SetView").html(), posts);
// In your template
<div class="row_4">
<div class="photo_container">
<div class="set_cover">
<img src="/<%= _.escape(posts[0].thumb_subpath) %><%= _.escape(posts[0].img_filename) %>" width=240 />
</div>
<div class="set_thumbs">
<% _.each(posts, function(post){ %>
<img src="<%= _.escape(post.thumb_subpath) %><%= _.escape(posts.img_filename) %>" width=55 />
<% }); %>
</div>
</div>
</div>
我想你会发现,这个问题是在这些线路:
<%= _.each(posts, function(post) { %>
<img src="<%= post.thumb_subpath %><%= posts.img_filename %>" width=55 />
<%= }); %>
从我的什么突出的回忆呢评估模板,这些线没有太大的意义。 每个<%= ..%>项被单独评估..也就是说,它们必须满可求值的表达式,而不是局部的功能块..
编辑:其实,詹姆斯是正确的。 <%..%>可以被单独定义(这一切都归结于在端部的大的javascript字符串)。 它逃脱,插值表达式必须是独立的表达式。
编辑二:即便如此,在评估方面,我觉得用功能块仍然可能创造可能不会十分评估按预期......我得想想它的bizzare JavaScript字符串。 它可能仍然工作出完全罚款。