0

ユーザーがページから移動する前に保存したい情報を含む一連の領域サブビューを管理する Marionette.Layout があります。レイアウトで使用onBeforeClose()していましたが、レイアウトの前に領域が閉じて削除されているようです。falseさらに、戻ってonBeforeClose()もサブビューの破壊を防ぐことができるようには見えません。別のアプローチがあるかどうか、またはマリオネットonBeforeClose()をより早く呼び出す必要があるかどうかについて、何か考えはありますか?

他の人は、クローズが発生する前に変更を検出することを提案していますが、ここで述べたように (マリオネット ビューを閉じる onBeforeClose を防止します)、すべてのクローズ ケースをキャプチャするわけではありません。

4

1 に答える 1

0

closeデフォルトの動作を変更する必要がある場合、通常は独自のメソッドを作成することになります。再利用できるようにする場合は、ミックスインを作成します。何かのようなもの:

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 に答える