我目前正在使用木偶2.4.1。

在视图A中,如果我从属于视图A的区域中删除视图B,则在清空该区域时会在视图B上触发什么事件?

我知道在视图B上调用了onDestroyonBeforeDestroy,但是我想知道如果该区域包括{preventDestroy: true}会触发什么事件?如果使用它,则不会调用onDestroyonBeforeDestroy,但是我无法弄清楚在视图B上触发了什么事件。似乎没有。

最佳答案

假设您的LayoutView称为视图A,它具有一个区域。在该区域中,显示了一个名为B的ItemView。当A清空其区域时,事件将在视图B(before:destroydestroy)上触发-无论视图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/

10-12 00:21
查看更多