我尝试.reset()
清除我的collection
,然后再调用.fetch()
来检索该网页的新数据。
但由于某些原因,当我导航到另一个页面时,我的collection
没有被重置并获取新数据。它只会重置集合并在我手动重新加载页面时获取新数据。
class ProjectPostItemsView extends Backbone.View
template: JST['project_post_items.ejs']
posts_item_views: []
initialize: ->
super()
@listenTo( @collection, 'add', @displayPostItem )
@collection.reset().fetch(add: true)
displayPostItem: (project) ->
view = new ProjectPostItemView(model: project)
@posts_item_views.push( view.on('render', =>
@$('.post-items').append(view.$('>'))) )
render: (options) ->
super(options)
我对Backbone很新,所以我不确定我是否正确处理了这个问题。我做错了什么?
感谢任何帮助。提前谢谢!
答案 0 :(得分:3)
不是在获取之前调用重置,更好的方法是使用:
collection.fetch({reset: true});
根据Backbonejs文档,
"当模型数据从服务器返回时,它使用set来(智能地)合并获取的模型,除非你传递{reset:true},在这种情况下集合将被(有效地)重置。 #34;
http://backbonejs.org/#Collection-fetch
答案 1 :(得分:1)
集合的reset
函数不会返回集合对象,因此您无法链接reset
和fetch
。将initialize
函数的最后一行更改为两行:
@collection.reset()
@collection.fetch()
旁注:没有理由将{add: true}
传递给fetch
。任何进入该系列的新模型都会自动触发您正在收听的“添加”事件。