浏览器刷新后 SAPUI5 路由重置
SAPUI5 routing reset after browser refresh
我开发了一个 SAPUI5 主细节应用程序。当我单击主项目时,会显示相应的详细信息页面(到目前为止还不错)。现在的问题是,如果我在浏览器中点击刷新 (F5),则会加载最后选择的项目(因为 URL 参数)。
我想实现的是,显示主列表,但没有选择任何项目。相反,应该显示 "select an item" 页面而不是项目详细信息页面。
我已经尝试了很多事情,例如操纵路由,但是 none 这个工作。关于如何实现这一点有什么想法吗?
这样做你就放弃了深度链接的整个想法,恕我直言,这是路由的主要好处之一。所以三思而后行。
无论如何,您可以像这样在组件中初始化路由器之前重置散列:
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/core/routing/HashChanger"
], function (UIComponent, HashChanger) {
"use strict";
return UIComponent.extend("sap.ui.demo.nav.Component", {
metadata: {
manifest: "json"
},
init: function () {
// reset the routing hash
HashChanger.getInstance().replaceHash("");
// call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
// create the views based on the url/hash
this.getRouter().initialize();
}
});
});
BR
克里斯
我开发了一个 SAPUI5 主细节应用程序。当我单击主项目时,会显示相应的详细信息页面(到目前为止还不错)。现在的问题是,如果我在浏览器中点击刷新 (F5),则会加载最后选择的项目(因为 URL 参数)。
我想实现的是,显示主列表,但没有选择任何项目。相反,应该显示 "select an item" 页面而不是项目详细信息页面。 我已经尝试了很多事情,例如操纵路由,但是 none 这个工作。关于如何实现这一点有什么想法吗?
这样做你就放弃了深度链接的整个想法,恕我直言,这是路由的主要好处之一。所以三思而后行。
无论如何,您可以像这样在组件中初始化路由器之前重置散列:
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/core/routing/HashChanger"
], function (UIComponent, HashChanger) {
"use strict";
return UIComponent.extend("sap.ui.demo.nav.Component", {
metadata: {
manifest: "json"
},
init: function () {
// reset the routing hash
HashChanger.getInstance().replaceHash("");
// call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
// create the views based on the url/hash
this.getRouter().initialize();
}
});
});
BR 克里斯