繁体   English   中英

触发更改事件,而在骨干视图中重置

[英]Change event fired instead reset in backbone view

我试图通过抓取来执行我的重置事件,但它不起作用...

路由器:

var tablesCollection = new TablesCollection();
var tablesView = new TablesView({ collection: tablesCollection});
tablesCollection.fetch({ reset: true });

我的观点:

initialize: function(){

  _.bindAll(this);
  this.collection.bind('reset',   this.render);
  this.collection.bind('add',     this.addTable);
  this.collection.bind('change',  this.changeTable);
  this.collection.bind('destroy', this.delTable);
},
render: function() {
  this.el.innerHTML = _.template( this.template, { data : _.groupBy( this.collection.toJSON(), 'status')} );
}

如果我已重置,则仍会触发Change事件:fetch中为true。 我想通过重置事件然后通过刚刚编辑的更改事件来呈现集合中的每个项目。 谢谢您的帮助

重置集合不会删除事件绑定。 只是从集合中删除对象。

如果另一个视图/服务器事件再次开始填充您的集合,则您的视图仍将被绑定并仍然触发事件。

首先,我将使用.on(主干事件系统)代替.bind

然后,如果您想从集合中解除视图的绑定,则可以使用http://backbonejs.org/#Events-off

或者更好的是,如果您想破坏这个特定的视图(并且它仍然在做出反应,也许这就是您的问题),请使用http://backbonejs.org/#View-remove

它将自动取消绑定所有事件。

希望对您有所帮助

编辑:

重置将始终触发“更改”,因为它会更改您集合的所有对象。 您应该调整渲染功能,使其在“更改”而不是“重置”时触发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM