0

我有一个 Marionette.Layout 来管理一堆区域子视图,这些子视图包含我想在用户离开页面之前保存的信息。我onBeforeClose()在布局中使用,但区域似乎在布局之前被关闭和删除。false此外,返回似乎onBeforeClose()也不能防止破坏子视图。关于是否有替代方法或是否onBeforeClose()应该更早调用 Marionette 的任何想法?

其他人建议在关闭发生之前检测更改,但正如这里提到的(Prevent Marionette view from close onBeforeClose)它没有捕获所有关闭案例。

4

1 回答 1

0

close当我需要更改默认行为时,我通常最终会编写自己的方法。如果要可重用,我将创建一个 mixin。就像是:

close: function() {
    if (this.isClosed){ return; }
    // the following if statement is the only difference between
    // Marionette.Layout.close and my view's version.
    // Everything in the if is original
    if ( myCondition ) {
        this.regionManager.close();
        var args = Array.prototype.slice.apply(arguments);
        Marionette.ItemView.prototype.close.apply(this, args);
    }
}

它不一定是您要寻找的东西,但它是一种选择。onBeforeClose被调用 from Marionette.View.close,而后者又被调用 from ItemView.close。这是我发现获得所需控制的唯一方法。

于 2013-07-08T19:07:20.370 回答