在主干/下划线的模板中使用循环

我有一个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字符串……我必须考虑它。 它可能仍然完全没问题。