【发布时间】:2013-04-30 08:45:43
【问题描述】:
在我的主干应用程序中,REST 服务总是返回 JSON 数据,所以我应该始终使用 this.collection.toJSON() 还是可以在集合提取后直接使用 this.collection 将数据绑定到下划线模板?
【问题讨论】:
标签: backbone.js collections underscore.js fetch
在我的主干应用程序中,REST 服务总是返回 JSON 数据,所以我应该始终使用 this.collection.toJSON() 还是可以在集合提取后直接使用 this.collection 将数据绑定到下划线模板?
【问题讨论】:
标签: backbone.js collections underscore.js fetch
最好将 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。
【讨论】:
<%- model.get('title') %> - 也打印转义的标题