Marionette CompositeView - Child 保留在 this.children
Marionette CompositeView - Child remains in this.children
我目前正在使用 CompositeView
。问题是,当我在 CollectionView
部分的 child 视图之一上调用 destroy()
时,它仍然保留在 this.children._view
对象中,即使它从屏幕上消失了.
如果我尝试对它做任何事情(比如说再次调用 destroy()
),它已经被销毁了,但是为什么它没有从 object?[=18= 中删除呢? ]
提前致谢。
Child 视图 parent 没有意识到
这可能听起来很烦人,但它是设计成这样的,因为 CollectionView child 也可能单独存在。据我所知,集合视图的 children 并不知道它们是 children(除了模型被销毁 [并因此从永久存储中删除] 的情况)。
CollectionView.removeChildView
可以帮忙
但是,Marionette 确实公开了一个 CollectionView
方法,该方法正是为您想要做的事情而制作的,CollectionView.removeChildView(view)
。
CollectionView.removeChildView
将从 DOM 中删除视图,销毁视图(删除视图上的所有侦听器)并将其从 children
容器中删除。请传递您的一个观点。
如果您需要一些关于如何在 child 视图中触发事件 CollectionView.removeChildView
的提示,请给我留言。
我目前正在使用 CompositeView
。问题是,当我在 CollectionView
部分的 child 视图之一上调用 destroy()
时,它仍然保留在 this.children._view
对象中,即使它从屏幕上消失了.
如果我尝试对它做任何事情(比如说再次调用 destroy()
),它已经被销毁了,但是为什么它没有从 object?[=18= 中删除呢? ]
提前致谢。
Child 视图 parent 没有意识到
这可能听起来很烦人,但它是设计成这样的,因为 CollectionView child 也可能单独存在。据我所知,集合视图的 children 并不知道它们是 children(除了模型被销毁 [并因此从永久存储中删除] 的情况)。
CollectionView.removeChildView
可以帮忙
但是,Marionette 确实公开了一个 CollectionView
方法,该方法正是为您想要做的事情而制作的,CollectionView.removeChildView(view)
。
CollectionView.removeChildView
将从 DOM 中删除视图,销毁视图(删除视图上的所有侦听器)并将其从 children
容器中删除。请传递您的一个观点。
如果您需要一些关于如何在 child 视图中触发事件 CollectionView.removeChildView
的提示,请给我留言。