在我的backbone.js应用程序中,有一个Trips collection
保存Trip models
,它与LocalStorage
一起工作。我可以调用Trips.create(form_attributes)
创建并保存到Todos store
的旅行。
当我第一次加载我的应用程序时,我调用Trips.fetch({ success: trips_fetch_success })
,trips_fetch_success
收到一个响应,显示Trips collection
保存的Trip models
。
我已经尝试将refresh
和change
事件绑定到Trips collection
,但是这些事件没有被捕获,这让我相信我对Trips.fetch
触发的事件有错误的想法。
我的问题:Trips.fetch
应该触发哪些事件?这些事件是在集合上触发的,还是在每个Trip models
上触发的?
3条答案
按热度按时间mbyulnm01#
Collection.fetch()
将在成功时调用reset
,这又将触发一个“reset”事件。集合重置事件的任何订阅者都将收到该事件。这里的关键是“on success”。我遇到了这个问题,却发现 Backbone 网在默默地吞噬我的错误消息。传入一个错误处理程序,至少记录到
console.log()
,然后看看发生了什么:(Note:旧版本的backbone.js将触发“刷新”而不是“重置”)
siv3szwd2#
如果您使用的是backbone 1.0,则需要在fetch()调用中传递reset:true,以便与reset事件绑定:
6ioyuze23#
从 Backbone.js 1.0开始,model.fetch()触发了一个“sync”,这就是你应该绑定的。
以下是backbone.js源代码中触发“sync”事件的相关部分: