如何在没有oEvent的情况下调用方法

时间:2014-08-14 10:29:50

标签: sapui5

如何从控制器的方法调用事件处理程序?

<Button text="click" tap=".BtnTap" />
BtnTap: function(oEvent) {
  console.log("Button Tap");
},

doSomething : function() {
  BtnTap();
},

我想从控制器中的另一个函数调用BtnTap()。{ 似乎无法从另一个函数访问oEvent

2 个答案:

答案 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();
}