2

多くのネストされたビュー (マリオネット レイアウトとリージョン) を持つ複雑なバックボーン アプリケーションがあり、これらのビュー間で調整するために既に marionette eventmanager を使用しています。しかし、コーディングの途中で、あまりにも多くのイベントを作成していることに気付きました。さらに複雑なことに、複数のアクションをトリガーするイベントはほとんどありません。

他の複雑なバックボーン アプリによってイベントがどのように管理されているか..より大きな穴に自分自身を掘り下げる前に、イベントを処理するときに留意すべきガイドライン、ベスト プラクティスなど。

ありがとう

4

1 に答える 1

2

どのイベント フレームワークを使用しているかわかりません。仮定をせずに、すべての Marionette ビューで直接利用できるMarionette のEventBinderを使用していることを確認してください。また、オプションで、あまりにも多くの境界を越えるアプリ レベルのイベント用のEventAggregatorを使用していることを確認してください。モジュールのデカップリング用。

私はこのテーマの専門家ではないので、以下は決して信頼できるものではありません。

  • 親ビューが同じモジュールのサブビューでアクションをトリガーする必要がある場合は、イベント メカニズムではなく直接メソッド呼び出しを使用します。
  • サブビューが親ビューでアクションをトリガーする必要がある場合は、次のように使用EventBinderします。

親ビューで:

this.bindTo(subview, 'myscope:myevent', this.myevetHandler);

サブビューで:

this.trigger('myscope:myevent');
  • クロスモジュールまたはクロスビューのイベント伝播、基本的にアプリ全体のイベントの場合、アプリケーションの EventAggregator:

    MyApp = new Backbone.Marionette.Application();
    
    MyApp.vent.on("foo", function(){
      alert("bar");
    });
    
    MyApp.vent.trigger("foo"); // => alert box "bar"
    
  • 特定のアプリケーション オブジェクトに依存しない再利用可能なモジュールの場合、カスタムEventBinderまたはEventAggregator.

より長い議論については、次を参照してください。

于 2012-09-22T20:25:37.850 に答える