firePress只能在SAPUI5按钮上打一次

问题描述 投票:-2回答:2

我想在按钮上执行click事件。我可以使用firePress来做到这一点但是这是一个切换按钮,所以它被卡在一个循环中。

onPromotionEditPressed: function(){
    this.byId("__xmlview1--tablePromotion-btnEditToggle").firePress();
    return;
}

该函数永远不会返回,所以它永远不会停止。我怎样才能确保只运行一次?

javascript sapui5
2个回答
1
投票

SAP已经有了Toggle Button的元素,所以也许看看这里的完整示例Toggle Button Preview

onPress: function(oEvent) {
  if (oEvent.getSource().getPressed()) {
    new sap.m.MessageToast.show(oEvent.getSource().getId() + " Pressed");
  } else {
    new sap.m.MessageToast.show(oEvent.getSource().getId() + " Unpressed");
  }
},
<HBox>
  <ToggleButton id="tablePromotion" text="Pressed" enabled="true" pressed="true" press="onPress" />
</HBox>

要么

如果你试图从同一控制器中的另一个方法调用fire事件,假设“tablePromotion”是没有__xmlview1 - 的调用按钮的ID。

this.getView().byId("tablePromotion").firePress();

要么

从另一个控制器调用:

sap.ui.controller("namespace.Controllername").onPress();

1
投票

您可以使用以下功能确保它只运行一次。

这在david walsh blog中有描述和解释。

function once(fn, context) { 
    var result;

    return function() { 
        if(fn) {
            result = fn.apply(context || this, arguments);
            fn = null;
        }

        return result;
    };
}

// Usage
var canOnlyFireOnce = once(function() {
    console.log('Fired!');
});
© www.soinside.com 2019 - 2024. All rights reserved.