在我的backbone.js应用程序中,有一个Trips collection持有Trip models,正在使用LocalStorage.我可以打电话Trips.create(form_attributes)来创建和保存旅行Todos store.
当我第一次加载我的应用程序,我打电话Trips.fetch({ success: trips_fetch_success })和trips_fetch_success接收,显示的响应Trip models的Trips collection成立.
我试图绑定refresh和change事件Trips collection,但这些事件没有被捕获,让我相信我对哪些事件Trips.fetch触发了错误的想法.
我的问题:应该Trips.fetch触发哪些事件?是在集合上还是在每个人身上触发事件Trip models?
Elf*_*erg 59
Collection.fetch()将呼吁reset成功,这反过来将触发'重置'事件.集合重置事件的任何订阅者都应该收到该事件.
这里的关键是"成功".我遇到了这个问题,却发现骨干网正在默默地吞下我的错误信息.传递一个错误处理程序,至少记录到console.log(),并查看发生了什么:
trips.fetch({error: function() { console.log(arguments); }});
(注意:旧版本的backbone.js将触发"刷新"而不是"重置")
jes*_*sal 52
如果您使用的是主干1.0,则需要在fetch()调用中传递reset:true以便与reset事件绑定:
trips.fetch({reset: true});
Per*_*Tew 20
从骨干1.0开始,model.fetch()触发'同步'.这就是你应该绑定的东西.
这是来自backbone.js源的相关部分,其中触发了'sync'事件:
fetch: function(options) {
  options = options ? _.clone(options) : {};
  if (options.parse === void 0) options.parse = true;
  var model = this;
  var success = options.success;
  options.success = function(resp) {
    if (!model.set(model.parse(resp, options), options)) return false;
    if (success) success(model, resp, options);
    // HERE'S THE TRIGGER!
    model.trigger('sync', model, resp, options);
  };
  wrapError(this, options);
  return this.sync('read', this, options);
},
| 归档时间: | 
 | 
| 查看次数: | 49555 次 | 
| 最近记录: |