【问题标题】:AngularJS routing causing issues with server callsAngularJS路由导致服务器调用问题
【发布时间】:2015-07-25 08:40:59
【问题描述】:

我在 nodewebkit 应用程序中使用AngularJS
我有三种观点:

  1. 主页.html
  2. 对话.html
  3. 登录.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,我们可以取消所有服务器调用?

【问题讨论】:

  • 您可以使用socket.disconnect()断开套接字,看看是否有帮助

标签: javascript angularjs angularjs-routing node-webkit


【解决方案1】:

我从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 ... }
  }
})

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    相关资源
    最近更新 更多