点击此处---> 群内免费提供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();
不幸的是,这对默认模型没有影响。 仅加载元数据,但默认模型不会替代。
希望有人可以在一些帮助下跳入这里。
最诚挚的问候
格雷戈尔
只是想想-您是否足够早地附加了事件处理程序以进行触发(对于requestCompleted事件)?
嗨,格雷格,
我认为您对清单和默认OData模型的更改为时已晚。 在您的请求完成之前,组件已经初始化了所有内容。
我建议尝试删除manifest.json中的OData模型定义,以免初始化默认模型。 保持" _setDefaultModelForUser"功能不变,但删除处理manifest.json的代码。
我仍然会使用目的地来定义您的不同服务。
希望有帮助。
最诚挚的问候,
Wouter
Gregor,
我已经成功使用了Wouter建议的相同方法。
就我而言,我有一个供在线使用的模型,另一个供离线使用的模型,它设置在onInit事件上。
最诚挚的问候,
道格拉斯
我将扩展该应用程序,并通过配置替换OData服务,就像处理任何Fiori应用程序一样。
一周热门 更多>