Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS重新加载页面功能和自动注销功能相互冲突_Javascript_Angularjs_Angularjs Scope_Angular Ui Router_Reload - Fatal编程技术网

Javascript AngularJS重新加载页面功能和自动注销功能相互冲突

Javascript AngularJS重新加载页面功能和自动注销功能相互冲突,javascript,angularjs,angularjs-scope,angular-ui-router,reload,Javascript,Angularjs,Angularjs Scope,Angular Ui Router,Reload,我正在编写一个使用AngularJS和ui路由器的应用程序。我有一个通过重新加载页面来刷新页面的按钮,还有一个在窗口或选项卡关闭时自动注销用户的功能。现在这两个函数都工作得非常好,并且使用传统的javascript使事情变得简单。见下文: <script> // Refreshes by reloading page function refresh() { location.reload(); } // Auto

我正在编写一个使用AngularJS和ui路由器的应用程序。我有一个通过重新加载页面来刷新页面的按钮,还有一个在窗口或选项卡关闭时自动注销用户的功能。现在这两个函数都工作得非常好,并且使用传统的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>

但是,问题是当单击“重新加载”按钮时,它也会注销当前用户,这不是我想要的。我只希望用户在窗口关闭时注销。有没有办法做到这一点?在我的控制器中重新加载路由会解决问题吗?

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

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

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

您正在创建SPA应用程序单页应用程序吗?我正在创建一个应用程序,该应用程序具有多个带有导航栏的页面,但所有页面都写入一个文件-index.ejs@Hardyits最好刷新特定的页面控制器,而不是location.reload,因为它将重新加载整个应用程序并重定向到您定义的第一个默认页面您的ui-router。如何刷新特定控制器?我已经尝试了这里的一切@Hardy为什么这被否决了,这个解决方案有效@geeky_shNvm当您关闭一个单独的选项卡,然后刷新数据库@geeky_shn时,这将不起作用