2017-05-03 50 views
0

我想獲得的輸入值,但是當我調用該函數出現錯誤this.getView()是不是一個函數SAPUI5 - 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

我會假設你得到第二this.getView()的f錯誤ROM內的回調。你得到這個是因爲this在JavaScript中工作的方式。請參閱以下MDN文檔:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/this

簡而言之,調用一個函數自由沒有它從「內部」的對象所引用(即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) 
+0

嗨謝爾班,感謝對答案。現在它可以工作 –