javascript - SAPUI5事件总线: Prevent stacking the same subsciptions

标签 javascript event-bus sapui5

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

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!");
     });
}

关于javascript - SAPUI5事件总线: Prevent stacking the same subsciptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299707/

相关文章:

android - 是否需要取消注册事件总线

java - Activity 巴士回顾

javascript - 使用 css 自定义按钮

javascript - ajax请求的方法

java - 如何只注册一次EventBus

sapui5 - 如何在 UI5 的 SmartField 值帮助中默认隐藏高级搜索?

java - 未定义属性上聚合角色的命名空间前缀 sap

javascript - 如何检查模型中已创建的条目?

javascript - Angular -> 渲染和克隆元素 -> 范围访问

javascript - 调整 Google map api V3 中标记的大小