SAPUI5 - this.getView()不是函数

时间:2017-05-03 14:44:32

标签: javascript sapui5 getvalue

我正在尝试获取输入值,但是当我调用该函数时,我得到错误 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"/>

1 个答案:

答案 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)