簡體   English   中英

riot.js:傾聽另一個元素的事件

[英]riot.js: Listen for events of another element

假設我有兩個自定義元素:a和b。 a包含可以單擊的另一個元素,我想在發生這種情況時觸發自定義事件。 然后應該通過元素b捕獲該自定義事件。

我可以在元素a中使用this.trigger,但是元素b中的this.on不會捕獲事件(這似乎是合乎邏輯的,因為它沒有在b上觸發)。

那么:我可以檢索元素b中的元素a來執行元素b中的“elementA.on()”嗎?

基本上,我想要像RiotControl這樣的功能,但是沒有存儲數據,因為我只是想在我的用例中觸發一個模態而不存儲任何東西。

我可能會回到jQuery並觸發並監聽文檔上的事件,但這真的是一個好方法嗎?

您可以創建共享的可觀察對象,例如:

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對我來說是新手

我解決這個問題的方法是使用mixin自動將相同的Observable包含在多個標簽中。

// mixins.js
let ObservableMixin = {
    observable: riot.observable()
};

然后在我希望共享observable存在的任何.tag文件中,我只是打電話。

// Any .tag file
this.mixin(ObservableMixin);
...
this.observable.trigger('eventName', { optional: options });

有關mixins的更多信息,請查看: Riot Mixins

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM