在我当前的应用程序中,每当用户单击浏览器上的刷新按钮时,应用程序都会再次加载并将用户重定向到主页。我需要保持在同一页面上(无需再次加载应用程序)。我已经浏览了 StackOverflow 中的许多链接,但我找不到我正在寻找的确切解决方案。任何帮助将不胜感激。
我正在使用 angular 1.3.17 和 $stateProvider 在状态之间进行路由。我将所有数据存储在 $rootScope 中,每当用户单击刷新时,$rootScope 都会被破坏并且必须再次重新加载应用程序
我的目标是防止应用程序加载并仅加载用户当前正在使用的页面。
有充分的理由没有办法阻止用户重新加载/离开页面。但是在重新加载之前会触发两个事件,您可以让浏览器要求用户留下来。
如果用户确认页面离开,您仍然可以在重新加载之前做最后的事情
如前所述,您可以对路由更改做出反应(并防止!)(当用户单击页面上的链接按钮时触发,但当用户通过浏览器重新加载时它没有帮助)。
最后,在 $rootScope 上保存很多东西并不是一种优雅的方式,而且您正在失去角度封装的好处。如果您想让某些(!)信息“防重新加载”,我建议将它们保存在 sessionStorage (关闭选项卡时删除)或 localStorage (仍然存在,它只是在您清理浏览器缓存或删除时被删除)你的代码)。我强烈建议使用 ngStorage 来处理 sessionStorage/localStorage,就像这样:
https://github.com/gsklee/ngStorage
你可以这样安装它:
npm i -S ngStorage