AngularJS正在等待与的ajax响应,但没有按预期工作
在我的应用程序中,我想检查用户是否已登录,以便启用或禁用菜单中的按钮。我可以用一种简单的方法来做,但是我遇到了一个问题,菜单会“闪烁”,用户会看到一些菜单项,直到ajax的响应出现AngularJS正在等待与的ajax响应,但没有按预期工作,angularjs,angularjs-scope,angular-promise,Angularjs,Angularjs Scope,Angular Promise,在我的应用程序中,我想检查用户是否已登录,以便启用或禁用菜单中的按钮。我可以用一种简单的方法来做,但是我遇到了一个问题,菜单会“闪烁”,用户会看到一些菜单项,直到ajax的响应出现 $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { $http.get('api/users/userLoggedIn').then(function(data){
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
$http.get('api/users/userLoggedIn').then(function(data){
console.log(data);
$scope.userLoggedIn = data;
});
});
这就是我想到的,如果我遵循文档,那么我应该做出承诺,在我的页面加载之前等待ajax调用的响应,但事实并非如此,“眨眼”仍然存在
有什么办法解决这个问题吗 您应该隐藏所有菜单项,然后在响应返回后显示它们 然后,您可以在调用发生时放置加载程序gif。关于这一点有一篇很棒的帖子 因此,用户将看到一个带有加载器gif的空白菜单,一旦响应返回,将显示正确的菜单项 空白内容+加载器gif通常是解决此问题的方式,因为它比FOUC(未样式内容的闪存)更可取
希望这有帮助。使用$routeProvider的resolve属性。我不能这样做,因为菜单位于母版页上的单独控制器内。