我在我的应用程序中使用UI路由器,我想知道我是否可以重新加载 - 或在用户注销时销毁服务,而不刷新视图?到目前为止,当用户注销时,后端会将其记录下来,然后将其重定向到登录视图。但是,所有服务仍然有效。有什么想法吗?
由于
答案 0 :(得分:0)
UI路由器提供状态转换事件,因此您可以侦听转换事件,当转换发生在登录页面时,您可以手动刷新服务。通过刷新我的意思是你可以通过将它们初始化为初始状态将它们带到初始状态。
您可以在服务中保留close()
这样的功能,再次声明所有内容。因此,您可以在注销时调用此函数来刷新您的服务。
请参考以下示例:Refresh factory/service instance
答案 1 :(得分:0)
//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();
};
}]);