从区域中删除视图时会触发哪些视图事件?

What view events are triggered when a view is removed from a region?

我目前正在使用 Marionette 2.4.1.

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

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

假设您的 LayoutView 称为视图 A,它有一个区域。在该区域中显示了一个名为 B 的 ItemView。当 A 清空其区域时,将在视图 B(before:destroydestroy)上触发事件 - 无论视图 B 是否显示在其区域中 preventDestroy: true 或不显示,都会发生这种情况。

preventDestroy: true 用于在一个区域中显示一个视图,然后在不破坏前一个视图的情况下显示同一区域中的另一个视图。所以,在这个例子中:


  1. 在区域中显示视图 B。
  2. 在同一区域显示(没有 preventDestroy)新视图 (C) - 将导致视图 B 被销毁并触发销毁事件。

  1. 在区域中显示视图 B。
  2. 在同一区域显示(使用 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 不会触发销毁事件,也不会触发其他事件。