我尝试获取sapui5 v2 odata模型的服务元数据。代码:
var oModel = new sap.ui.model.odata.v2.ODataModel(someServiceURL);
var oMetadata = oModel.getServiceMetadata();这应该根据这个页面工作:https://openui5beta.hana.ondemand.com/docs/guide/6c47b2b39db9404582994070ec3d57a2.html
不管怎么说,我给oMetadata买了"undefined“。如果我将代码更改为:
var oModel = new sap.ui.model.odata.v2.ODataModel({
loadMetadataAsync : false,
serviceUrl : someServiceURL
});静止oMetadata === undefined
根据SDK文档,元数据应该同步加载:
返回元数据对象。请注意,当使用带有bLoadMetadataAsync = true的模型时,由于元数据尚未加载,此函数可能返回未定义的数据。在本例中,附加到metadataLoaded事件以在元数据可用时得到通知,然后调用此函数。
我的密码怎么了?
我正在使用(1.28.11):
<script src="https://sapui5.netweaver.ondemand.com/resources/sap-ui-core.js" ...我开始调试UI5代码并检测到以下行: this.bLoadMetadataAsync = true;
我开始调试SAPUI5代码,并检测到以下行(似乎每次都被调用):
this.bLoadMetadataAsync = true;是虫子吗?还是我的代码出了什么问题?
发布于 2015-08-11 11:41:00
解决方案:在实际的应用程序环境中为我工作。我想是因为没有提出实际的数据要求,所以我的小提琴里没有被射中:
var oModel = new sap.ui.model.odata.v2.ODataModel(<ServiceURL>);
oModel.attachMetadataLoaded(null, function(){
var oMetadata = oModel.getServiceMetadata();
console.log(oMetadata);
},null);通向解决方案:
好的,我开始玩这个游戏,并发现了以下内容:
.getServiceMetadata()和sap.ui.model.odata.ODataModel合作得很好。sap.ui.model.odata.v2.ODataModel,元数据请求是通过网络发送的,但不知何故,.getServiceMetadata()返回了undefined。sap.ui.model.odata.v2.ODataModel.attachMetadataLoaded(),但事件从未被炒鱿鱼。(这仅适用于我使用的jsbin )我将编辑这与任何进一步的发现,我所做的。如果你有什么东西应该包括在我的发现/测试,就告诉我。
编辑:
bLoadMetadataAsync是您可以在sap.ui.model.odata.ODataModel上设置的参数。该参数不再存在于sap.ui.model.odata.v2.ODataModel的API中。我假设异步加载已经被选择为默认加载。
编辑: @user3783327在这里报告了一个bug:https://github.com/SAP/openui5/issues/564
发布于 2017-11-20 11:24:02
作为天狼星,ODataModel现在有一个名为metadataLoaded的API,它相应地返回一个承诺。在解析函数中,我们肯定可以得到服务元数据getServiceMetadata()。
myODataModel.metadataLoaded()
.then(() =>/* Do something with */myODataModel.getServiceMetadata());或者,我们也可以使用ODataMetaModel,它可以在任何ManagedObject (包括视图)上设置,并提供与服务元数据相关的几个有用的访问器。为了获得元模型,我们需要从ODataModel中使用适当的API,而不是直接实例化模型:
myODataModel.getMetaModel().loaded()
.then(() =>/* Do something with */myODataModel.getMetaModel()/*...*/);https://stackoverflow.com/questions/31938755
复制相似问题