2017-05-04 10 views
0

XMLビューでOdata Modelで取得したデータを表示しようとしています。 Component.jsでは、サービスURLを使用してモデルを作成し、通常通り動作します。コントロールにバインドする要素SAPUI5

var oDataModel = new sap.ui.model.odata.v2.ODataModel("http://server:port/sap/opu/odata/SAP/ZWYMB_SRV", { 
      user:"abapleader", 
      password: "[email protected]", 
      headers: { 
       "sap-client": 300 
      }, 
      useBatch:false 
     });   
     this.setModel(oDataModel, "oDataModel"); 

これまでのところ、model.read()機能を使用してデータを取得することができました。

詳細ビューを表示する必要があります。 onInitイベントのための私のコードは以下の通りです:

  this.router.getRoute("zwm01detail").attachPatternMatched(this._onObjectMatched.bind(this)); 

     }, 
     _onObjectMatched: function(oEvent) { 
      var that = this; 
     var MaWorkDoc = oEvent.getParameter("arguments").MaWorkDoc; 
      this.getModel("oDataModel").metadataLoaded().then(function() { 
       var sPath = that.getModel("oDataModel").createKey("/WorkDocList", { 
        MaWorkDoc: MaWorkDoc, 
        Pernr: "0001" 
       }); 
       console.log(sPath); 
       that.getView().bindElement({ 
        path:sPath 
       }); 
      }); 

sPath私はconsole.log(sPath)を使用してプリントアウトとして:/ WorkDocList(MaWorkDoc = '1110000001'、PERNR = '0001')、私は考えている、正しいです。私はこのパスを使ってバックエンドを実装しテストしましたが、基本的には問題ありません。しかし、なぜ私はビュー上にデータを表示できないのかわかりません。

Detail.view.xml:

<Text text="{/MaWorkDoc}" maxLines="0"/> 

任意の提案、してください?

答えて

0

詳細バインディングコードが.metadataLoadedハンドラー内にあるとは限りません。むしろ_onObjectMatchedのすぐ内側にあるはずです。

このような意味です。

+0

詳細を教えてください。私のコードに_onObjectMatchedイベントを実装するにはどうしたらいいですか?申し訳ありませんが、それはあなたに不快感を感じさせるが、私はこれで全く新しいです。 –

+0

Answer – krisho

0

モデルに名前を付けるので、バインディングでその名前を使用する必要があります。すなわち<Text text="{oDataModel>/MaWorkDoc}" maxLines="0"/>

+0

私はすでにoDataModelを追加しようとしましたが、まだ動作していません –

0

だから、私は文書で取り組んでいて、助けになるmodelパラメータがあることを理解しました。

具体的には、私は以下のようにview.bindElementmodelを宣言する追加:

that.getView().bindElement({ 
        path:sPath, 
//** oDataModel = name of the model 
        model: "oDataModel" 
       }); 

を任意のより良い解決策があれば、私はそれを知って非常に嬉しいと思います。ありがとうございました。!

関連する問題