我在nodewebkit应用程序中使用AngularJS
我有三种观点:
登录时,我正在呼叫
$state.go('home.main');
调用
$stateProvider.state('home.main', {
url: '/home',
views: {
"mainContent": {
templateUrl: 'views/home.html',
controller: 'loginController'
}
}
}
在主html中,我正在进行服务器调用(通过socket.io)来获取所有对话。 由于数据量巨大,因此加载它需要一些时间,在这个时间间隔内,即在用户从服务器获得响应之前,如果用户点击Logout,它会将用户带回登录页面。
$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的路由有什么办法,我们可以取消所有服务器调用吗?
答案 0 :(得分:0)
我从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();