1

a と b という 2 つのカスタム要素があるとします。a にはクリックできる別の要素が含まれており、これが発生したときにカスタム イベントをトリガーしたいと考えています。そのカスタム イベントは、要素 b によってキャッチされる必要があります。

要素 a で this.trigger を使用できますが、要素 b の this.on はイベントをキャッチしません (b でトリガーされなかったので、これは論理的に思えます)。

だから:要素bの要素aを取得して、要素bの「elementA.on()」のようなことをすることはできますか?

基本的には、RiotControl のような機能が必要ですが、ユース ケースでモーダルをトリガーし、何も保存したくないため、データを保存する必要はありません。

おそらくjQueryにフォールバックして、ドキュメントのイベントをトリガーしてリッスンすることもできますが、これは本当に良い方法ですか?

4

2 に答える 2

3

たとえば、共有オブザーバブルを作成できます。

var eventBus = riot.observable();

要素をマウントするときに、オプションとして渡すことができます。

riot.mount('elementa', { eventBus: eventBus })
riot.mount('elementb', { eventBus: eventBus })

次に、同じオブザーバブルをリッスンしてトリガーできます。

this.opts.eventBus.trigger('openModal', ...maybeSomeOptions);
this.opts.eventBus.on('openModal', function(...maybeSomeOptions) {});

免責事項: riotjs は私にとって初めてのことです

于 2015-11-14T00:32:46.120 に答える