【发布时间】:2017-09-19 15:51:25
【问题描述】:
我有一个主详细信息页面应用程序,我们在其中配置了路由器以在页面之间导航。
App.view.xml
<SplitApp id="rootControl" detailNavigate="onDetailNavigation">
</SplitApp>
manifest.json
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewPath": "master",
"controlId": "rootControl",
"viewType": "XML",
"async":"true"
},
"routes": [
{
....
},
...
"targets": {}
...
应用程序是简单的员工 CRUD 应用程序,我为路由器配置了 2 个路由,1 个用于创建/编辑,另一个用于显示
如果我从一个视图导航到另一个视图,我需要销毁该视图,例如在页面开始时显示包含所有员工的母版页,而详细信息页面显示员工 1 的显示视图。
我在显示视图上有编辑按钮,按下时我将详细信息页面从显示视图导航到编辑视图,此时我需要从缓存的路由器中销毁显示视图。
如何做到这一点?还是我需要采取不同的方法来解决缓存问题?或者我不应该想到记忆
尝试调用SplitApp的destroy onDetailNavigate
onDetailNavigation : function(oEvent){
console.log("Split app onDetailNavigation");
oEvent.getParameter('from').destroy();
}
下次返回相同视图时会出错
Error: The object with ID __xmlview4 was destroyed and cannot be used anymore.
【问题讨论】:
-
如果你先remove
from视图然后销毁它会发生什么?如果您下次导航回同一个视图,您会得到同样的错误吗? -
让我试一次
-
做了以下更改
var splitApp = this.getView().byId('rootControl'); splitApp.removeDetailPage(oEvent.getParameter('from')); oEvent.getParameter('from').destroy();仍然是同样的错误 -
但如果我不销毁路由器,则路由器具有视图实例但已从 DOM 中删除
-
我做了一些修改,如下从路由器中删除,这样可以吗?
var router = this.getOwnerComponent().getRouter(); for(var view in router._oViews._oViews){ if( router._oViews._oViews[view].sId === oEvent.getParameter('fromId') ) { delete router._oViews._oViews[view]; } }
标签: sapui5