【发布时间】:2016-04-29 15:03:48
【问题描述】:
我在一个项目中使用 UI-Router。我正在使用路由器提供的状态解析功能。当我想在两个状态之间显示加载器并且我经常更改状态时,微调器会弹出但不再消失。
在这里可以找到相同的效果。
http://rp.js.org/angular-ui-view-spinner/example/index.html
如果在两种状态之间快速单击,则加载程序不会隐藏。
我正在等待 stateChangeStart 广播并显示加载器,并且在 statChangeSuccess、stateChangeError 和 viewContentLoaded 上我不想隐藏加载器。 stateChangeStart 被触发,但 stateChangeSuccess 没有。知道为什么会出现这种行为吗?
我在 0.2.18 版本中使用 angular-ui-router
这里是显示和隐藏的代码:
$rootScope.$on('$stateChangeStart', showLoading);
$rootScope.$on('$stateChangeSuccess', hideLoading);
$rootScope.$on('$stateChangeError', hideLoading);
$rootScope.$on('$viewContentLoaded', hideLoading);
function showLoading() {
$timeout(function () {
angular.element('.loading-indicator').show();
}, 50);
}
function hideLoading() {
$timeout(function () {
angular.element('.loading-indicator').hide();
}, 50);
}
【问题讨论】:
-
出于兴趣,为什么要显示加载动画,您是在发出某种 ajax 请求吗?
-
是的。我在状态的解析器函数中获取后端资源,然后进入状态。但我不确定承诺是否会在一秒钟或一分钟后得到解决。为了让用户感觉发生了什么事情,我在内容区域上方而不是导航上方显示了一个加载器。
标签: javascript angularjs angular-ui-router