我有一个Backbone Marionette CollectonView,它在子视图中监听事件如下:
this.on(this, 'itemview:timeline:storyRemoved', this._storyRemoved);
itemview在onClose期间触发事件:
onClose: function () {
this.trigger('timeline:storyRemoved', { model: this.model });
}
但是永远不会调用_storyRemoved函数。
如果我将触发器移动到onShow,那么它可以正常工作:
onShow: function () {
this.trigger('timeline:storyRemoved', { model: this.model });
}
我猜这与视图已经关闭并因此不再在集合视图中的事实有关?
任何方式让这个工作?
答案 0 :(得分:1)
你认为视图没有收听是正确的,因为它在你触发事件时已经被关闭了。
根据您正在做的事情,模型本身不应该触发此事件吗?这样,你可以在集合视图中添加这样的东西:
collectionEvents: {
'remove': '_storyRemoved'
}
As you can see here,删除模型会触发删除事件,并引用已删除的模型。
答案 1 :(得分:1)
我喜欢gbsice的观点,我还想添加更一般的答案:如果您需要在onBeforeClose
事件之前执行某些操作,则可以使用onClose
而不是close
。
所以在你的情况下,它将是
onBeforeClose: function () {
this.trigger('timeline:storyRemoved', { model: this.model });
}