如何为所有安装的标签发送事件?

How can I send event for all mounted tags?

riot.js 2.2

根据 riot.js 官方网站上的指南,我必须调用

tag.trigger('event_name')

其中 tag 是某个监听器的实例。

但是我必须怎么做才能触发所有标签的事件? riot.js 是否有针对此问题的任何实现,或者我必须手动解决它(通过保留所有侦听器实例)?

Riot 没有实现保持对所有事件侦听器的引用。所以,如果你想直接对它们执行 trigger,你必须自己实现它。

但是,我建议使用另一种解决方案来通知多个事件侦听器。

如果你想让多个标签知道一个事件已经发生,你可以使用一个共享的可观察对象并处理这个可观察对象上的事件。参见 。这样,您不需要保留对所有事件侦听器的引用,相反,事件侦听器需要保留对单个可观察对象的引用 ('event aggregator')。

您也可以尝试 RiotControl 作为共享的可观察对象。