在主干/下划线的模板中使用循环
我有一个backbone.js / underscore.js模板,我正在进入一个骨干视图进行渲染。 View传递的模型包含一个对象的数组posts
(我在模板中称为post
)。
问题 :当我尝试循环遍历数组posts
所有元素时,我得到一个错误Uncaught SyntaxError: Unexpected token )
并在主干View视图的代码template: _.template( $('#tpl_SetView').html() )
引用一行template: _.template( $('#tpl_SetView').html() )
。
我是否错误地循环,导致此错误?
模板代码
<img src="/" width=240 /> <img src="" width=55 />
要回显变量使用<%= %>
,但要解析javaScript代码,只需使用<% %>
。
例如:
// In your Backbone View var posts = {"posts": this.model.toJSON()}; var template = _.template($("#tpl_SetView").html(), posts); // In your template <% _.each(posts, function(post){ %> <% }); %>
我想你会发现问题出在以下几个方面:
<%= _.each(posts, function(post) { %> <%= }); %>
从我对下划线对评估模板的作用的回忆,这些行没有多大意义。 每个<%= ..%>项都是单独计算的。也就是说,它们必须是完全可评估的表达式,而不是部分function块。
编辑:实际上,詹姆斯是对的。 <%..%>可以单独定义(最终归结为一个大的javascript字符串)。 它被转义并且插值表达式必须是单独的表达式。
编辑II:即便如此,在评估上下文中我认为使用function块仍然可能会创建一个可能无法按预期评估的奇怪的javascript字符串……我必须考虑它。 它可能仍然完全没问题。