2016-05-01 5 views
0

でのように多入力が定義されている取得:XML-ViewElement(多入力)byID XML-ビューでコントローラ

<MultiInput 
     placeholder="Tags" 
     id="tagInput" 
     showValueHelp="false"> 
</MultiInput> 

今すぐオブジェクトは、コントローラ内の関数にアクセスする必要があります。私はOdataRequestのSuccessHandlerで私たちに多入力をしたいと思いますが、私はcan'

onInit: function() { 
    var multiInput = this.getView().byId("tagInput")}; 

それは

onInit: function() { 
    var multiInput = this.getView().byId("tagInput")}, 
otherFunction: function(){ 
    var view = this.getView(), // is null 
    multiInput = sap.ui.getCore().byId("tagInput"), // is null 
    multiInput1 = this.multiInput; // is null 
}; 

のような他の機能にアクセスすることがcan't:それが動作する機能のOnInitでMultiInput-Objektを取得してください。

+0

あなたの 'otherFunction'はおそらくビューの初期化の前に呼び出されます:) –

答えて

0

this.getView().byId()sap.ui.getCore().byId()と同じではありません。最初のビューは、ビューに関連するIDを解決します(の場合はtagInput)。2番目のIDはグローバルIDだけです。

おそらくthisへの参照を失ってしまったでしょうか? JavaScriptのthisはコールバック関数で失われます。一般的なパターンは、イベントハンドラの前にvar that = this;を宣言し、代わりにthat.getView().byId()を使用することです。

UI5s attachEventメソッドには、イベントハンドラ内でthisになるオブジェクトを供給するための追加パラメータがあります。

関連する問題