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
Angularjs 我可以在不刷新视图的情况下重新加载应用程序吗?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 我可以在不刷新视图的情况下重新加载应用程序吗?

Angularjs 我可以在不刷新视图的情况下重新加载应用程序吗?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我在应用程序中使用UI路由器,我想知道当用户注销时,我是否可以重新加载或销毁服务,而不刷新视图?到目前为止,当用户注销时,后端会将其注销,并将其重定向到登录视图。然而,所有的服务仍在运行。有什么想法吗 感谢UI路由器提供了状态转换事件,因此您可以监听转换事件,当登录页面发生转换时,您可以手动刷新服务。我所说的刷新是指通过将它们初始化为初始状态,可以使它们进入初始状态 您可以在服务中保留一个类似于close()的函数,它可以再次声明所有内容。因此,您可以在注销时调用此函数来刷新您的服务 请参考此示

我在应用程序中使用UI路由器,我想知道当用户注销时,我是否可以重新加载或销毁服务,而不刷新视图?到目前为止,当用户注销时,后端会将其注销,并将其重定向到登录视图。然而,所有的服务仍在运行。有什么想法吗


感谢

UI路由器提供了状态转换事件,因此您可以监听转换事件,当登录页面发生转换时,您可以手动刷新服务。我所说的刷新是指通过将它们初始化为初始状态,可以使它们进入初始状态

您可以在服务中保留一个类似于
close()
的函数,它可以再次声明所有内容。因此,您可以在注销时调用此函数来刷新您的服务


请参考此示例:

也许这可以帮助您:用户是否也从服务器端的服务注销?应该是这样吗?理想情况下,为HTTP 401提供一个json结果我可以将状态设置为初始状态吗?假设您的服务有一个变量
abc
,该变量最初可能定义为
var abc=[]
。因此,在事件处理程序中,可以再次将其声明为空数组。这只是一个例子。
//Controller where the logout button is called
.controller("ctrl", function(destroyService){

   this.logout = function(){
      //Probably an ajax request to logout from server.
      $http.post("logoutUrl", userId)
         .then(function(){
            destroyService.destroyAll();
            $state.go("loginPage");
         });
   };

})


.service("destroyService", ["service1", "service2", function(service1, service2){

  this.destroyAll = function(){
    service1.destroyAll();
    service2.destroyAll();
  };

}]);