在主干/下划线中使用循环's模板
Using loops in backbone/underscore's templates
我有一个backbone.js/donscore.js模板,我正在将其输入到主干视图中进行渲染。View传递了一个模型,该模型包含对象的数组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字符串)。它被转义,插值表达式必须是单独的表达式。
编辑II:即便如此,在评估上下文中,我认为使用函数块仍然可能创建一个奇怪的javascript字符串,该字符串的评估结果可能不完全符合预期。。。我得好好考虑一下。也许还是可以的。
相关文章:
- 在Django中,可以在视图中创建一个包含js的变量,然后在循环模板标记中使用它
- 在主干/下划线中使用循环's模板
- 如何使用Handlebars循环数组对象和模板
- 如何在模板中循环遍历数据模型中的每个记录
- Meteor:循环模板的模板级别订阅或所有订阅完成后
- 在 jsp 中的“胡须”下划线模板中的 for 循环
- 是否可以让 DUST 模板循环和交错来自两个不同数组的元素
- 翡翠模板在一个循环中有多个数组
- 循环遍历 Kendo JavaScript 模板中的 JSON 对象
- 如何在谷歌闭包模板中循环多个传递的参数
- AngularJS在编译中呈现模板,在部分内部的循环中呈现模板
- 具有项目特定函数的循环的 Django 模板的最佳实践
- HTML 模板不适用于 For-In 循环 JavaScript
- js模板中的循环
- 运行一个循环来迭代Jade模板中的对象数组
- Knockout.js模板化-“;跳过”;循环
- 循环变量的Django模板标记{{for/empty}}
- Ractive.js模板循环
- Django模板在pickerselect选择后没有刷新循环
- 流星:循环模板中的块