点击此处---> 群内免费提供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();
不幸的是,这对默认模型没有影响。 仅加载元数据,但默认模型不会替代。
希望有人可以在一些帮助下跳入这里。
最诚挚的问候
格雷戈尔
或者您可以在清单中定义不同的数据源,然后在组件的init中设置数据源?
嗨乔瓦尼,
感谢您提供有关扩展程序的提示。 现在,我已经创建了主应用程序的两个扩展,然后在其中进行了服务替换。 现在,只需将启动板配置为根据用户的组分配使用不同的应用程序。
最诚挚的问候
格雷戈尔
不能只使用应用程序组件扩展并执行类似的操作吗?
是的,这也是我早些时候在答案中建议的内容……
为什么需要使用默认模型? 也许定义两个模型并将您使用的模型设置在其他位置会更容易?
如何将这些代码移到以后的位置?
component ---> app
应用程序控制器怎么样?
一周热门 更多>