AngularJS路由导致服务器调用问题

AngularJS routing causing issues with server calls

本文关键字:调用 问题 服务器 路由 AngularJS      更新时间:2023-09-26

我在nodewebkit应用程序中使用AngularJS
我有三个视图:

  1. home。
  2. Conversation.html
  3. Login.html

登录时,我正在呼叫

$state.go('home.main');    

调用

$stateProvider.state('home.main', {
            url: '/home',  
            views: {
                "mainContent": {
                    templateUrl: 'views/home.html',
                    controller: 'loginController'
                }
            }
}

在主html中,我正在进行服务器调用(通过socket.io)以获得所有对话。由于数据是巨大的,它需要一些时间来加载它,在这个时间间隔,即在用户从服务器得到响应之前,如果用户点击注销,它将用户带回到登录页面。

 $scope.logout = function(){  
    //Logout Logic  
      $state.go('login');
 }  

。它调用

 $stateProvider.state('login', {
            url: '/login',
            templateUrl: 'views/login.html',
            controller: "loginController"
        });  

现在当用户试图登录时,服务器响应为获取对话而发出的呼叫,允许用户将他带到/home/conv.html。

我不想禁用Logout按钮,而数据是从服务器发送到客户端。
有没有办法从/home路由到/login,我们可以取消所有服务器调用?

我从https://github.com/angular-ui/ui-router/wiki:

复制了代码
$stateProvider.state("contacts", {
  template: '<h1>{{title}}</h1>',
  resolve: { title: 'My Contacts' },
  controller: function($scope, title){
    $scope.title = 'My Contacts';
  },
  onEnter: function(title){
    if(title){ ... do something ... }
  },
  onExit: function(title){
    if(title){ ... do something ... }
  }
})

onExit事件将在你离开家时被触发。主到另一条航线。因此,您应该在声明home的地方注册以处理事件。主要路线。在这种情况下,您可以取消所有服务器调用。当您使用套接字时。我建议您使用socket.removeAllListeners();

函数