2

在我的主干应用程序中,REST 服务总是返回 JSON 数据,所以我应该始终使用this.collection.toJSON()还是可以this.collection在集合获取后直接使用来将数据绑定到下划线模板?

4

1 回答 1

3

最好将 Backbone 的集合/模型对象直接传递给下划线模板,因为它可以方便地将方法添加到输出属性的格式化值的模型中。检查这个例子(假设模型有自定义方法getFormattedDate

this.$el.html(this.template({collection: this.collection}))

<ul>
<% collection.each(function (model) { %>
    <li><%= model.getFormattedDate() %> — <%= model.escape('title') %></li>
<% }); %>
</ul>

但是如果你决定直接传递 JSON 数据,那么你就不能输出格式化的日期:

this.$el.html(this.template({collection: this.collection.toJSON()}))

<ul>
<% _.each(collection, function (model) { %>
    <li><%= model.date %> — <%- model.title %></li>
<% }); %>
</ul>

UPD:我在下划线模板中转义值是错误的,因为您可以使用<%- content %>语法来输出转义的内容。因此,将模型和集合直接传递给下划线模板的唯一好处是能够使用格式化数据的自定义 getter。

于 2013-04-30T09:24:44.737 回答