点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好专家,
先决条件:我有三个应用程序 App1 , App2 和 App3 。 可以直接通过 CrossAppNavigator.toExternal 调用 App1 :
var oCrossAppNavigator = sap.ushell.Container.getService(" CrossApplicationNavigation"); var hash =((oCrossAppNavigator && oCrossAppNavigator.hrefForExternal({ 目标:{ 语义对象:"应用", 动作:" App1" }, 参数:{ " Purreqnr":sItem.Purreqnr } }))|| ""; oCrossAppNavigator.toExternal({ 目标:{ shellHash:哈希 } });
或通过sap.ui.core.ComponentContainer打开它:
//Edit.controller.js _onRouteMatched:函数(oEvent){ oArgs = oEvent.getParameter(" arguments"); oView = this.getView(); var oPage = oView.byId(" page"); var oCompData = { PurchaseRequisition:oArgs.Purreqnr }; 如果(!jQuery.isEmptyObject(this.editComponent)){ this.editComponent.destroy(); 删除this.editComponent; } if(!jQuery.isEmptyObject(this.editContainer)){ this.editContainer.destroy(); 删除this.editContainer; } oPage.destroyContent(); 尝试{ this.editContainer = new sap.ui.core.ComponentContainer(" atbComponentContainer",{ 生命周期:sap.ui.core.ComponentLifecycle.Container}); oPage.addContent(this.editContainer); this.editComponent = sap.ui.getCore()。createComponent({ 网址:"/img/sap/bc/ui5_ui5/zapps/zapp1", 名称:" app1", componentData:oCompData }); this.editComponent.setContainer(this.editContainer); this.editContainer.setComponent(this.editComponent); } catch(err){ // } }
两个变体均正常运行, App2 通过ComponentContainer打开 App1 , App3 导航至 App1 ,然后返回。/p>
问题显示用户何时从 App3 中打开 App1 几次(例如5次)。 每次用户从 App1 返回到 App3 时,都会分别调用 App1
用户从 Edit 视图导航回到 Home 视图,然后再次导航至 Edit 视图之后,将出现 this.editComponent。 destroy(); 调用,因此它将清除 App1 的先前实例,并将创建一个新实例。 但是在 this.editComponent.destroy(); 时刻,调试器将在 App1 的 onExit()中停止6次(5次) 来自App3,1来自App2)。 因此,即使已调用此方法,SAPUI5缓存中的某个位置也会存储先前打开的应用程序实例,并为其调用 onExit()。
然后,在每次导航后 Edit -> Home -> Edit 查看 onExit()中调试器停止的数量 将增加1(每次导航)。
但是如果我强制刷新页面(Ctrl + F5)并尝试多次导航编辑-> 主页-> 编辑, em> onExit()将被调用一次。 仅在 CrossAppNavigator.toExternal 导航,然后是 sap.ui.core.ComponentContainer
之后,才会出现多个实例。
是错误还是应清除某些缓存?
编辑1:我们有sap.ui.version = 1.44.27
上传的库版本
关于
雅罗斯拉夫
(75.3 kB)
我正在使用toExternal,但这从未发生在我身上,也许您可以告诉我们您的UI5版本? 如果是错误,则可能已修复。
顺便说一句,这就是我的用法,以防万一:
克里斯蒂安(Hello Cristian)
我们有sap.ui.version = 1.44.27。 还添加了SAP库的屏幕截图。
更好地避免了第二种方法,而仅使用交叉导航
,您可以在清单文件的路由配置中使用模式来处理 ,或在routmatched函数中,只需使用 getComponentData()。startupParameters 处理crossnavogator(外部导航)中的模式/参数,并坚持使用适当的视图/应用程序,这样就可以避免刷新时默认应用程序加载。 p>
一周热门 更多>