どのイベント フレームワークを使用しているかわかりません。仮定をせずに、すべての 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
.
より長い議論については、次を参照してください。