2

マリオネット ビューをアニメーションで閉じて、アニメーションが終了するのを待ってから DOM から削除するようにしました。
(洞察は高く評価されます)

Marionette.View の close メソッドを次のように書き直しました。

close: function(){
        if (this.isClosed) { return; }

        // allow the close to be stopped by returning `false`
        // from the `onBeforeClose` method
        var beforeCloseReturnValue = this.triggerMethod("before:close");
        if (beforeCloseReturnValue === false){
            return;
        }

        if (IsObjectNullOrUndefined(beforeCloseReturnValue))
        {
            this.closeTheView();
            return;
        }

        if (beforeCloseReturnValue.promise)
        {
            var _this = this;
            $.when(beforeCloseReturnValue).done(function(){
                console.log("view close done!");
                _this.closeTheView();
            });
        }
    },

closeTheView: function(){
    // mark as closed before doing the actual close, to
    // prevent infinite loops within "close" event handlers
    // that are trying to close other views
    this.isClosed = true;
    this.triggerMethod("close");

    // unbind UI elements
    this.unbindUIElements();

    // remove the view from the DOM
    this.remove();
 }

また、ビュー インスタンスには、onBeforeClose メソッドの次の実装が含まれています。

onBeforeClose: function(){
  _this = this;
  return $.Deferred(function(){
    _this.$el.fadeOut(2000, dfd.resolve);
    }).promise();
}

これまでのところ非常にうまく機能します。
それについて何か考えがあるかどうか聞きたかった.
ありがとう。

4

1 に答える 1