Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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
Javascript AngularJS路由导致服务器调用问题_Javascript_Angularjs_Angularjs Routing_Node Webkit - Fatal编程技术网

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

Javascript AngularJS路由导致服务器调用问题,javascript,angularjs,angularjs-routing,node-webkit,Javascript,Angularjs,Angularjs Routing,Node Webkit,我正在nodewebkit应用程序中使用AngularJS。 我有三种看法: Home.html Conversation.html Login.html 登录时,我正在呼叫 $state.go('home.main'); 哪个叫 $stateProvider.state('home.main', { url: '/home', views: { "mainContent": {

我正在nodewebkit应用程序中使用
AngularJS

我有三种看法:

  • Home.html
  • Conversation.html
  • 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');
     }  
    
    i、 它叫

     $stateProvider.state('login', {
                url: '/login',
                templateUrl: 'views/login.html',
                controller: "loginController"
            });  
    
    现在,当用户尝试登录时,服务器会响应为获取对话而发出的呼叫,允许用户将其带到/home/conv.html

    当数据从服务器发送到客户端时,我不想禁用“注销”按钮。
    有没有办法从/home路由到/login,我们可以取消所有服务器呼叫

    我从以下位置复制了代码:

    $stateProvider.state(“联系人”{
    模板:“{{title}}”,
    解析:{title:'我的联系人'},
    控制器:功能($scope,title){
    $scope.title='我的联系人';
    },
    合一者:功能(标题){
    如果(标题){…做点什么…}
    },
    onExit:功能(标题){
    如果(标题){…做点什么…}
    }
    })
    

    当您从home.main移动到另一条路线时,将触发onExit事件。因此,您应该在声明home.main路由的位置注册以处理事件。在这种情况下,您可以取消所有服务器调用。在使用socket.io时,我建议您使用函数
    socket.removeAllListeners()

    您可以使用
    socket.disconnect()断开套接字连接。
    查看是否有帮助
    $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 ... }
      }
    })