【问题标题】:Can I reload app without refreshing view?我可以在不刷新视图的情况下重新加载应用程序吗?
【发布时间】:2016-02-08 16:45:53
【问题描述】:

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

谢谢

【问题讨论】:

标签: angularjs angular-ui-router


【解决方案1】:
//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();
  };

}]);

【讨论】:

    【解决方案2】:

    UI Router 提供状态转换事件,所以你可以监听转换事件,当转换发生在登录页面时,你可以手动刷新你的服务。通过刷新,我的意思是您可以通过将它们初始化为初始状态来将它们带入初始状态。

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

    例如参考这个:Refresh factory/service instance

    【讨论】:

    • 我怎样才能将状态带入初始状态?
    • 假设您的服务有一个变量abc,最初可能定义为var abc = []。因此在事件处理程序中,您可以再次将其声明为空数组。这只是一个例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2019-04-05
    相关资源
    最近更新 更多