从区域中删除视图时会触发哪些视图事件?
What view events are triggered when a view is removed from a region?
我目前正在使用 Marionette 2.4.1.
在视图 A 中,如果我从属于视图 A 的区域中删除视图 B,清空该区域时视图 B 会触发哪些事件?
我知道在视图 B 上,onDestroy
和 onBeforeDestroy
被调用,但是我想知道如果该区域包含 {preventDestroy: true}
会触发什么事件?如果我使用它,则不会调用 onDestroy
和 onBeforeDestroy
但我无法弄清楚视图 B 上触发了什么事件。似乎有 none.
假设您的 LayoutView 称为视图 A,它有一个区域。在该区域中显示了一个名为 B 的 ItemView。当 A 清空其区域时,将在视图 B(before:destroy
和 destroy
)上触发事件 - 无论视图 B 是否显示在其区域中 preventDestroy: true
或不显示,都会发生这种情况。
preventDestroy: true
用于在一个区域中显示一个视图,然后在不破坏前一个视图的情况下显示同一区域中的另一个视图。所以,在这个例子中:
- 在区域中显示视图 B。
- 在同一区域显示(没有
preventDestroy
)新视图 (C) - 将导致视图 B 被销毁并触发销毁事件。
- 在区域中显示视图 B。
- 在同一区域显示(使用
preventDestroy
)新视图 (C) - 不会 导致视图 B 被销毁,因此不会有销毁事件解雇了。
编辑
在第一种情况下,这些事件在视图上触发:
::: B ::: before:destroy
::: B ::: destroy
::: C ::: before:render
::: A ::: childview:before:render
::: C ::: render
::: A ::: childview:render
::: C ::: before:show
::: A ::: childview:before:show
::: C ::: before:attach
::: A ::: childview:before:attach
::: C ::: attach
::: A ::: childview:attach
::: C ::: dom:refresh
::: A ::: childview:dom:refresh
::: C ::: show
::: A ::: childview:show
在第二种情况下,这些事件在视图上触发:
::: C ::: before:render
::: A ::: childview:before:render
::: C ::: render
::: A ::: childview:render
::: C ::: before:show
::: A ::: childview:before:show
::: C ::: before:attach
::: A ::: childview:before:attach
::: C ::: attach
::: A ::: childview:attach
::: C ::: dom:refresh
::: A ::: childview:dom:refresh
::: C ::: show
::: A ::: childview:show
请注意,在最后一种情况下,视图 B 不会触发销毁事件,也不会触发其他事件。
我目前正在使用 Marionette 2.4.1.
在视图 A 中,如果我从属于视图 A 的区域中删除视图 B,清空该区域时视图 B 会触发哪些事件?
我知道在视图 B 上,onDestroy
和 onBeforeDestroy
被调用,但是我想知道如果该区域包含 {preventDestroy: true}
会触发什么事件?如果我使用它,则不会调用 onDestroy
和 onBeforeDestroy
但我无法弄清楚视图 B 上触发了什么事件。似乎有 none.
假设您的 LayoutView 称为视图 A,它有一个区域。在该区域中显示了一个名为 B 的 ItemView。当 A 清空其区域时,将在视图 B(before:destroy
和 destroy
)上触发事件 - 无论视图 B 是否显示在其区域中 preventDestroy: true
或不显示,都会发生这种情况。
preventDestroy: true
用于在一个区域中显示一个视图,然后在不破坏前一个视图的情况下显示同一区域中的另一个视图。所以,在这个例子中:
- 在区域中显示视图 B。
- 在同一区域显示(没有
preventDestroy
)新视图 (C) - 将导致视图 B 被销毁并触发销毁事件。
- 在区域中显示视图 B。
- 在同一区域显示(使用
preventDestroy
)新视图 (C) - 不会 导致视图 B 被销毁,因此不会有销毁事件解雇了。
编辑
在第一种情况下,这些事件在视图上触发:
::: B ::: before:destroy
::: B ::: destroy
::: C ::: before:render
::: A ::: childview:before:render
::: C ::: render
::: A ::: childview:render
::: C ::: before:show
::: A ::: childview:before:show
::: C ::: before:attach
::: A ::: childview:before:attach
::: C ::: attach
::: A ::: childview:attach
::: C ::: dom:refresh
::: A ::: childview:dom:refresh
::: C ::: show
::: A ::: childview:show
在第二种情况下,这些事件在视图上触发:
::: C ::: before:render
::: A ::: childview:before:render
::: C ::: render
::: A ::: childview:render
::: C ::: before:show
::: A ::: childview:before:show
::: C ::: before:attach
::: A ::: childview:before:attach
::: C ::: attach
::: A ::: childview:attach
::: C ::: dom:refresh
::: A ::: childview:dom:refresh
::: C ::: show
::: A ::: childview:show
请注意,在最后一种情况下,视图 B 不会触发销毁事件,也不会触发其他事件。