我在remove事件上有一个带有监听器的集合。
this.listenTo(this.collectionFiltered, 'remove', this.render, this);
我将此集合传递给新视图
var siteInfoView = new SiteInfoView({model: site, parentCollection: this.collectionFiltered});
并从中删除模型。
this.parentCollection.remove(this.model);
这似乎没有触发事件处理程序,我不确定原因。我已经通过创建此侦听器验证了事件并未触发:
this.listenTo(this.collectionFiltered, 'remove', function() {console.log('remove event');}, this);
我原本以为这是因为我尝试跨视图触发事件,但我能够捕获从第一个视图传入第二个视图的模型的更改。我知道事件是从第一个视图在this.collectionFiltered
上触发的,因为该视图会发生变化以反映该模型已被删除。
有谁能看到我在这里失踪的东西?
更新: SiteInfoView初始化:
initialize: function(options){
this.listenTo(this.model, 'change', this.render, this);
this.parentCollection = options.parentCollection || null;
},
更新2:两个观点的要点:https://gist.github.com/raddevon/aea6b21226e90c6352ba
更新3: This Codepen是为了证明问题而构建的,但它确实有效。显而易见的是我在我的代码中所做的事情,我只是没有看到。
更新4:刚刚在Chrome DevTools中发现了monitorEvents
。监控有问题的集合并删除该项目。在DevTools中没有事件记录到控制台。