SAPUI5 事件总线:防止堆叠相同的订阅

SAPUI5 EventBus: Prevent stacking the same subsciptions

本文关键字:总线 事件 SAPUI5      更新时间:2023-09-26

当我点击按钮时,我想订阅一个事件

EventBus.subscribe("sChannelFoo", "sIdBar", function(){
alert("FOOBAR!");
});

我在整个代码中订阅了"sChannelFoo"和sIdBar。什么是简洁的解决方案,以确保我只使用此按钮订阅此事件一次,即使我多次单击我的按钮?

如果我有 1000 个其他按钮,我希望它们也能够只订阅一次"sChannelFoo"和"sIdBar"。其他 1000 个按钮可能具有相同的功能或不同的功能。

可以使用 Button 控件上attachEventOnce的方法: https://openui5.hana.ondemand.com/docs/api/symbols/sap.ui.base.EventProvider.html#attachEventOnce

使用已注册的处理程序函数,可以调用对事件总线的订阅:

oButton.attachEventOnce('press', function() {
    EventBus.subscribe("sChannelFoo", "sIdBar", function() {
        alert(FOOBAR!");
     });
}