2017-05-04 51 views
0

我試圖在XML視圖中顯示由Odata模型檢索的一些數據。 在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中。

我的意思是這樣的。

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

請問您能詳細先生嗎?我如何在代碼中實現_onObjectMatched事件?對不起,如果它讓你感到不舒服,但我是全新的。 –

+0

更新了答案 – krisho

0

因爲您給模型一個名字,您需要在綁定中使用該名稱。即<Text text="{oDataModel>/MaWorkDoc}" maxLines="0"/>

+0

先生,我已經嘗試添加oDataModel>但它仍然不工作 –

0

所以我一直在處理文檔,並找出有model參數,這有助於。

更具體地講,我想補充申報modelview.bindElement如下:

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

如果有任何更好的解決方案,我會很高興知道這一點。謝謝。!