我想在按钮上执行click事件。我可以使用firePress
来做到这一点但是这是一个切换按钮,所以它被卡在一个循环中。
onPromotionEditPressed: function(){
this.byId("__xmlview1--tablePromotion-btnEditToggle").firePress();
return;
}
该函数永远不会返回,所以它永远不会停止。我怎样才能确保只运行一次?
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();
您可以使用以下功能确保它只运行一次。
这在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!');
});