如何从控制器的方法调用事件处理程序?
<Button text="click" tap=".BtnTap" />
BtnTap: function(oEvent) {
console.log("Button Tap");
},
doSomething : function() {
BtnTap();
},
我想从控制器中的另一个函数调用BtnTap()
。{
似乎无法从另一个函数访问oEvent
。
答案 0 :(得分:1)
我通常会说您通过事件总线与控制器进行通信。因此,您将在直接控制器中捕获tap事件并提交另一个事件,然后在另一个控制器中捕获。
捕获事件的控制器具有以下内容:
sap.ui.getCore().getEventBus().subscribe('submitSomething', eventID, this.reactToSomething, this);
发射器可能会出现这样的情况:
eventBus.publish('submitTmpData', eventID);
并且上述捕获控制器的事件处理程序看起来像这样。
reactToSomething: function(type, eventid){
...
},
您还可以为活动添加自定义数据。
干杯 迈克尔
答案 1 :(得分:0)
直接调用事件处理程序并不是那么优雅。也许你可以将事件处理程序中的逻辑提取到另一个函数。
BtnTap: function(oEvent) {
console.log("Button Tap");
this.btnTapHelper();
}
btnTapHelper: function() {
//logic here
}
doSomething : function() {
this.btnTapHelper();
}