我有一个collectionview
ItineraryEditorView
被换入和换出布局区域的东西。相同的实例collectionView
被交换使用,而不是每次都region.show
创建新实例。collectioView
集合上的渲染方法调用delegateEvents()
方法。
ItineraryEditorView = Marionette.CollectionView.extend({
tagName: "div",
emptyView: EmptyItineraryDayView,
itemView: ItineraryDayView,
initialize: function (options) {
},
render: function() {
Marionette.CollectionView.prototype.render.apply(this);
this.delegateEvents();
},
});
视图通过关闭区域换出:
plannerLayout.itineraryEditorRegion.close();
在视图中交换:
itineraryEditorView.delegateEvents();
plannerLayout.itineraryEditorRegion.show(itineraryEditorView);
模型的删除是通过监听从itemView
to冒泡的事件来完成的collectionView
(工作,这里没有问题)
itineraryEditorView.on("itemview:delete:day", function(childView, model) {
days.remove(model); //days coll is passed in to coll view on instance creation
holiday.save();
});
我希望这足以确保在itemViews
从基础天数集合中删除模型时删除/关闭集合视图中的子项。我可以看到集合实际上被修改并保存在服务器上,但是集合视图没有改变。这种情况当然适用于第一次换出集合视图之前。科尔。在我重新访问另一个选项卡并返回此选项卡后,视图确实会自行更新(因此呈现整个集合 - 确认更改/删除)
解决此问题的最佳方法是什么?如果我重新创建集合视图的实例,它确实会导致代码中丢失其他“打开”句柄。