为了账号安全,请及时绑定邮箱和手机立即绑定

OJET - 我如何在离开我的页面之前提醒用户?

OJET - 我如何在离开我的页面之前提醒用户?

千万里不及你 2022-10-27 15:16:17
我正在使用 Oracle JET 开发单页应用程序。在我正在构建的页面中,我试图在用户尝试离开页面而不保存更改时提醒他们。因此,当离开页面时,我想:拦截路由。检查是否有任何变化。如果有更改,请弹出一个窗口。如果没有任何未保存的更改,请继续路由。我相信这应该可以使用 ojRouter (此处的文档链接),但我还没有让它工作。我已经尝试了很多方法,但这是我到目前为止的结果:编辑:我已经更进一步并成功地访问了 canExit 属性,我在下面编辑了我的代码块。但是,这仍然不会阻止路由。oj.Router.sync().then(() => {   const letrouterState = oj.Router.rootInstance;   letrouterState.currentState().canExit = ableToExit();});function ableToExit() {  let canExit;  //function that will check if the page has unsaved changes  if (ableToExit()) {    canExit = false;  } else {    canExit = true;  }  return canExit;}我也尝试过使用window.onhashchange. 但是,这只会在打开我的页面时触发一个事件,而不是在离开它时触发。我希望我把我的问题说清楚了,如果需要的话,我很乐意澄清我的任何要求。有人可以帮助我吗?提前感谢您的时间。
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

ModuleViewModel接口实现了可选方法,该方法在 的事件上canExit被调用。假设您与 结合使用,这相对容易实现,您只需返回 a然后解决或拒绝它。beforeStateChangeModuleRouterAdapterModuleRouterAdapter<oj-module>Promise



查看完整回答
反对 回复 2022-10-27
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

因为干预整个路由器变成了一个非常混乱的解决方案,我们决定调整需求,不再这样做。感谢任何试图提供帮助的人。故事的寓意是不要尝试这个:)。



查看完整回答
反对 回复 2022-10-27
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号