使用在骨干/下划线的模板循环(Using loops in backbone/underscore&

2019-07-30 17:52发布

我有我送入渲染骨干视图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>

Answer 1:

呼应可变使用<%= %> ,但是解析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>


Answer 2:

我想你会发现,这个问题是在这些线路:

<%= _.each(posts, function(post) { %>
    <img src="<%= post.thumb_subpath %><%= posts.img_filename %>" width=55 />
<%= }); %>

从我的什么突出的回忆呢评估模板,这些线没有太大的意义。 每个<%= ..%>项被单独评估..也就是说,它们必须满可求值的表达式,而不是局部的功能块..

编辑:其实,詹姆斯是正确的。 <%..%>可以被单独定义(这一切都归结于在端部的大的javascript字符串)。 它逃脱,插值表达式必须是独立的表达式。

编辑二:即便如此,在评估方面,我觉得用功能块仍然可能创造可能不会十分评估按预期......我得想想它的bizzare JavaScript字符串。 它可能仍然工作出完全罚款。



文章来源: Using loops in backbone/underscore's templates