Backbone.js 如果服务返回JSON数据,我应该仍然使用this.collection吗。toJSON()?

Backbone.js 如果服务返回JSON数据,我应该仍然使用this.collection吗。toJSON()?,backbone.js,collections,underscore.js,fetch,Backbone.js,Collections,Underscore.js,Fetch,在我的主干网应用程序中,REsT服务总是返回JSON数据,所以我应该始终使用this.collection.toJSON(),还是可以在获取集合后直接使用this.collection将数据绑定到下划线模板?最好将主干网的集合/模型对象直接传递到下划线模板,因为向输出属性格式化值的模型添加方法很方便。检查此示例(假设模型具有自定义方法getFormattedDate) this.$el.html(this.template({collection:this.collection})) -

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

最好将主干网的集合/模型对象直接传递到下划线模板,因为向输出属性格式化值的模型添加方法很方便。检查此示例(假设模型具有自定义方法
getFormattedDate

this.$el.html(this.template({collection:this.collection}))
  • -
但如果您决定直接传递JSON数据,则无法输出格式化日期:

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

<ul>
<% _.each(collection, function (model) { %>
    <li><%= model.date %> — <%- model.title %></li>
<% }); %>
</ul>
this.$el.html(this.template({collection:this.collection.toJSON()}))
  • -

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

最好使用getter setter。比如model.get('title')。这是最佳实践。
-也可以打印转义titile@VitaliyPetrychuk酷,我不知道。但我仍然认为最好将集合和模型直接传递给模板。
this.$el.html(this.template({collection: this.collection.toJSON()}))

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