Odata 将元素绑定到控件SAPUI5

Odata 将元素绑定到控件SAPUI5,odata,sapui5,Odata,Sapui5,我试图在XML视图上显示Odata模型检索到的一些数据。 在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@",

我试图在XML视图上显示Odata模型检索到的一些数据。 在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()
函数将数据获取到master

现在我需要显示详细视图。我的
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
                });
            });
我使用
console.log(sPath)
:/WorkDocList(MaWorkDoc='1110000001',Pernr='0001')打印出的
sPath
,我认为是正确的。我还使用此路径实现并测试了后端,基本上一切正常。但是我不知道为什么我不能在视图上显示数据

Detail.view.xml:

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


有什么建议吗?

我认为详细绑定代码不应该在.metadataLoaded处理程序中。相反,它应该直接位于对象匹配的内部

我是说像这样

 _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
            });
        }  

因为您已经为模型指定了一个名称,所以需要在绑定中使用该名称。i、 e.

所以我一直在研究文档,发现有一个
模型
参数可以帮助我们

更具体地说,我在
view.bindElement
中添加了declare
model
,如下所示:

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

如果有更好的解决办法,我很高兴知道。谢谢

先生,我已经尝试添加oDataModel>,但仍然不起作用。请您更详细一点,先生?如何在代码中实现_onObjectMatched事件?抱歉,如果这让你感到不舒服,但我是全新的。更新了答案