【问题标题】:AngularJS reload page function and automatic log out conflict each otherAngularJS重新加载页面功能和自动注销相互冲突
【发布时间】:2015-10-02 16:20:57
【问题描述】:

我正在编写一个使用 AngularJSui-router. 的应用程序我有一个通过重新加载页面来刷新页面的按钮,以及在关闭窗口或选项卡时自动注销用户的功能。现在这两个函数都工作得很棒(并且使用传统的 javascript 来使事情变得简单)。见下文:

<script>
      // Refreshes by reloading page
      function refresh() {
          location.reload();
      }

      // Automatically logs users out when browser or tab is closed
      window.onunload = function(){
          localStorage.clear();
      }
</script>

但是,问题是当单击重新加载按钮时,它还会将当前用户注销,这不是我想要的。我只希望用户在窗口关闭时注销。无论如何这可以做到吗?在我的控制器中重新加载路由会解决问题吗?

【问题讨论】:

  • 你在创建一个 SPA 应用(单页应用)吗?
  • 我正在创建一个具有多个页面(带有导航栏)但所有页面都写在一个文件中的应用程序 - index.ejs @Hardy
  • 最好刷新特定的页面控制器而不是 location.reload(),因为它会重新加载您的整个应用程序并重定向到您在 ui-router 中定义的第一个默认页面。
  • 我究竟如何刷新特定的控制器?我在这里尝试了所有@Hardy stackoverflow.com/questions/31363435/…

标签: javascript angularjs angularjs-scope angular-ui-router reload


【解决方案1】:

不是一个好的解决方案,但您可以使用在重新加载页面时设置的全局标志

var refh = false;
function refresh(){
  ref = true;
  location.reload()
}

window.unonload = function(){
  if(!refh)
   localStorage.clear();
}

【讨论】:

  • 为什么这被否决了,这个解决方案有效! @geeky_sh
  • Nvm 这在您关闭单独的选项卡然后刷新数据库时不起作用@geeky_sh
猜你喜欢
  • 1970-01-01
  • 2016-05-24
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2023-03-30
相关资源
最近更新 更多