繁体   English   中英

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

[英]OJET - How do I alert a user before leaving my page?

我正在使用 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 但是,这只会在打开我的页面时触发事件,而不是在离开时触发。

我希望我把我的问题说清楚了,如果需要的话,我很乐意澄清我的任何要求。 有人可以帮助我吗? 提前感谢您的时间。

-沃特

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM