我试图在XML视图上显示由Odata Model检索的一些数据。 在Component.js中,我创建了一个带有服务Url的模型,它照常工作。
var oDataModel = new sap.ui.model.odata.v2.ODataModel("http://server:port/sap/opu/odata/SAP/ZWYMB_SRV", {
user:"abapleader",
password: "TH123456789a@",
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 :(得分: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
});
}
答案 1 :(得分:0)
因为您已为模型命名,所以您需要在绑定中使用该名称。即<Text text="{oDataModel>/MaWorkDoc}" maxLines="0"/>
答案 2 :(得分:0)
所以我一直在处理文档,并发现有model
参数有帮助。
更具体地说,我在model
中添加声明view.bindElement
,如下所示:
that.getView().bindElement({
path:sPath,
//** oDataModel = name of the model
model: "oDataModel"
});
如果有更好的解决方案,我很高兴知道。谢谢。!