2

Marionette.jsRegionsにはcloseイベントがあり、Regions.

私が抱えている問題はclose、子ビューがそれ自体を閉じると、このイベントがトリガーされないことです。

以下を参照してください。

var SubView = Marionette.ItemView.extend({

  // suppose close is called from the region item itself...
  internalClose: function() {
    this.close();
  },
});

var Layout = Marionette.Layout.extend({

  template: '<div class="region1"></div>',

  regions: {
    region1: '.region1',
  },

  onRender: function() {

    this.region1.show(new SubView());
    // When the SubView calls its own close, 
    // region1 does not register a close event.

    this.region1.on('close', function() {
      // self destruct or something exciting...
    });
  },
});

ItemViewをレイアウトと通信させ、それ自体が閉じたことを伝えるにはどうすればよいですか(ItemViewまたは何かの終了ボタンを押すなどして)。が閉じたLayoutときに独自の追加 DOM を操作する必要があります。ItemView

4

1 に答える 1

3

リージョンのイベントにリスナーをアタッチshowし、現在のビューのcloseイベントをリッスンします。

var region = this.region1;

region.on('show', function() {
    region.currentView.on('close', function() {
        // this message will cause the layout to self destruct...
     });
     // NOTE: You won't have to clean up this event listener since calling 
     //       close on either the region or the view will do it for you.
});

closeおそらく、リージョンでfor をリッスンする代わりにこれを実行できます。これは、 currentView.

于 2013-09-17T05:09:46.640 に答える