2017-05-04 52 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" 
       }); 

如果有任何更好的解决方案,我会很高兴知道这一点。谢谢。!