动态替换默认的OData模型

2020-09-28 07:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) SAP UI UI5专家, ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


SAP UI UI5专家,

我有一个SAPUI5应用程序,该应用程序在manifest.json中定义了默认的OData模型

"":{
 " dataSource":" mainService",
 "设置":{
 " metadataUrlParams":{
 " sap-documentation":"标题"
 },
 " defaultBindingMode":" TwoWay"
 }
 }
 

现在,我们要针对实现不同授权的不同OData服务使用同一应用程序。 服务的接口始终相同。 为此,我在应用程序的Component.js中实现了以下功能:

 _setDefaultModelForUser:function(){
 var that = this;
 var _odata1 ="/group1/service.xsodata";
 var _odata2 ="/group2/service.xsodata";
 var serviceUrl ="";
 var oManifest = this.getManifestObject();
 var oCurrentUser = this.getModel(" currentUser");
 oCurrentUser.attachRequestCompleted(function(){
 var username = oCurrentUser.getProperty("/img/name");

 开关(用户名){
 案例" P598692":
 serviceUrl = _odata1;
 打破;
 案例" S0001142741":
 serviceUrl = _odata2;
 打破;
 默认:
 }

 if(serviceUrl!==""){
 oManifest._oManifest [" sap.app"]。dataSources.mainService.uri = serviceUrl;
 var oDefaultModel = that.getModel("");
 var defaultModelSettings = oManifest._oManifest [" sap.ui5"]。models [""]。settings;
 oDefaultModel =新的sap.ui.model.odata.v2.ODataModel(serviceUrl,defaultModelSettings);
 that.setModel(oDefaultModel,"");
 }
 });
 }


 

我在init函数的开始处调用此方法:

 init:function(){
 this._setDefaultModelForGroup();
 

不幸的是,这对默认模型没有影响。 仅加载元数据,但默认模型不会替代。

希望有人可以在一些帮助下跳入这里。

最诚挚的问候
格雷戈尔

10条回答
SAP小黑
2020-09-28 07:37

只是想想-您是否足够早地附加了事件处理程序以进行触发(对于requestCompleted事件)?

一周热门 更多>