【问题标题】:Marionette onShow not firing after rerender region viewMarionette onShow 在重新渲染区域视图后未触发
【发布时间】:2025-12-10 21:50:01
【问题描述】:

我有一个区域,一旦呈现视图,我需要执行一些代码。所以我第一次调用myRegion.show(myView)myView 中的onShow 中的代码就可以了。

同一段代码在onRenderinitialize 不起作用。问题来了,当myView 发生更改后,我调用this.render() 来反映更改。这一次,“onShow”没有触发。

我认为我可以从视图中触发一个事件,在父视图中捕获它并再次调用 myRegion.show(myView)。但这看起来是一个棘手的解决方案,我不知道是否有更好的方法来处理这种情况。

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

    onShow 回调仅在您将视图插入区域时调用一次。

    我认为在你的情况下你应该使用onDomRefresh。 Marionette 在视图显示到区域和重新渲染时调用它(但仅在已经显示时)。因此,您可以在其中制作所有依赖 DOM 的代码。

    您可以在文档中阅读更多内容:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#view-domrefresh--ondomrefresh-event

    【讨论】: