如果服务返回JSON数据,我是否还应该使用this.collection。的toJSON()?

时间:2013-04-30 08:45:43

标签: backbone.js collections underscore.js fetch

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

1 个答案:

答案 0 :(得分: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。