要求:整个应用需要用户登录之后才进入,所以我在app.run 的时候与服务器交互,判断是否登录,并设置一些用户信息,因 $http 都是异步的,导致返回的不及时,网上百度了一些方法,
大多数都是 $q 服务,现在问题是 主要是 app.run 只运行一次,用$q 该如何操作~ 求大神求解
javascriptapp.run(function($rootScope, $state, $stateParams, $http, $filter) { $rootScope.$state = $state; $rootScope.$stateParams = $stateParams; // 用户登录判断以及所需信息 $http.get(app.URL.login). success(function(data) { if (data.code > 0 && data.isLogin) { $rootScope.nowDate = { year: parseInt($filter('date')(data.nowDate, 'yyyy'), 10), month: parseInt($filter('date')(data.nowDate, 'M'), 10), day: parseInt($filter('date')(data.nowDate, 'd'), 10) }; $rootScope.userInfo = { isLogin: data.isLogin, userName: data.userName, avatar: data.avatar }; } else { $state.go('login'); } }). error(function() { $state.go('login'); }); });
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
谢邀。
如果是第一次进入页面的话,为什么不在后端判断下是否是登录的;或者直接说后端可以把一些信息打印到页面上,这些信息可以是是否是登录状态。登录状态这个肯定是后端判断的。
还有就是中间可能用户还在这个页面,但是中间过程中登录token失效了,这时候需要重新登录,可以是后端对于相应的接口中返回一个固定的错误信息,例如 noLogin。然后angular中有拦截器,可以再拦截器中加入判断,如果是响应的noLogin,那么久导航到login或者有弹窗也是可以的。