我目前正在使用木偶2.4.1。
在视图A中,如果我从属于视图A的区域中删除视图B,则在清空该区域时会在视图B上触发什么事件?
我知道在视图B上调用了onDestroy
和onBeforeDestroy
,但是我想知道如果该区域包括{preventDestroy: true}
会触发什么事件?如果使用它,则不会调用onDestroy
和onBeforeDestroy
,但是我无法弄清楚在视图B上触发了什么事件。似乎没有。
最佳答案
假设您的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不会触发destroy事件,也不会触发其他事件。
关于javascript - 从区域中删除 View 时会触发哪些 View 事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39619737/