我正在尝试获取输入值,但是当我调用该函数时,我得到错误 this.getView()不是函数
以下是控制器中的功能
handleConfirmationMessageBoxPress: function(oEvent) {
var bCompact = !!this.getView().$().closest(".sapUiSizeCompact").length;
MessageBox.confirm(
"Deseja confirmar a transferência?", {
icon: sap.m.MessageBox.Icon.SUCCESS,
title: "Confirmar",
actions: [sap.m.MessageBox.Action.OK, sap.m.MessageBox.Action.CANCEL],
onClose: function(oAction) {
if (oAction == "OK"){
var loginA = this.getView().byId("multiInput").getValue();
alert(loginA)
MessageToast.show("Transferência efetuada");
}else{
// MessageToast.show("Transferência não cancelada");
}
},
styleClass: bCompact? "sapUiSizeCompact" : ""
}
);
}
这是视图中的输入
<m:Input id="multiInput" value="teste" placeholder="Clique no botão ao lado para buscar o usuário" showValueHelp="true" valueHelpRequest="valueHelpRequest" width="auto"/>
答案 0 :(得分:2)
我认为你在回调内的第二个this.getView()
上得到了这个错误。你得到这个是因为this
在JavaScript中的工作方式。请参阅以下MDN文档:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/this。
简而言之,在没有引用函数的情况下自由调用函数&#34; inside&#34;一个对象(即fnFunction()
vs oObject.func()
)将导致this
指向任何内容或窗口对象。要获得正确的this
,您可以使用arrow function声明,jQuery.proxy方法或.bind函数:
onClose: oAction => {
// your code
}
// OR
onClose: function(oAction) {
// your code
}.bind(this)
// OR
onClose: jQuery.proxy(function(oAction) {
// your code
}, this)