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