gpt4 book ai didi

odata - 如何在 onInit 上获取模型?

转载 作者:行者123 更新时间:2023-12-01 08:22:59 28 4
gpt4 key购买 nike

manifest.json 中,我有以下模型定义:

{
"sap.ui5": {
"models": {
"SalesInvoices": {
"type": "sap.ui.model.odata.v2.ODataModel",
"settings": {
"defaultOperationMode": "Server",
"defaultCountMode": "Request"
},
"dataSource": "ZAM_SALES_STATISTICS_CDS",
"preload": true
}
}
}
}
如您所见, SalesInvoices 连接到 OData 服务。
现在在 Controller 中的 onInit 函数上,我试图从 Metadata 获取 OData 如下:
{ // Controller
onInit: function() {
const oPayerModel = this.getView().getModel("SalesInvoices");
console.log(oPayerModel.getMetadata());
setTimeout(() => {
const oPayerModel = this.getView().getModel("SalesInvoices");
console.log(oPayerModel.getMetadata());
}, 600);
},
// ...
}
如您所见,我必须延迟获取 OData 实例。 setTimeout 不建议在 SAPUI5 中使用,我如何做得更好?

最佳答案

您可以避免 setTimeout ,如 mentioned in this answer ,通过使用 API metadataLoaded 而不是返回 promise 。成功加载服务元数据后,即会履行 promise 。

onInit: async function() {
const oPayerModel = this.getOwnerComponent().getModel("SalesInvoices");
await oPayerModel.metadataLoaded();
const serviceMetadata = oPayerModel.getServiceMetadata(); // NOT .getMetadata()
// ...
},

关于在 onInit 中未定义的模型,这里有更好解释的答案:
  • Nabi's answer
  • My other answer
  • 关于odata - 如何在 onInit 上获取模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380000/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com