当请求正在处理时,我想在按钮上显示或隐藏一个加载指示器。我通过在请求正在加载或已完成加载时更改 $scope.loading 变量来使用 Angular 实现此目的。
$scope.login = function(){
$scope.loading = true;
apiFactory.getToken()
.success(function(data){
})
.error(function(error){
})
.finally(function(){
$timeout(function() {
$scope.loading = false;
}, 0);
});
};
在前端:
<button ng-disabled="loading" class="button button-outline button-positive" type="submit">
Log in
<span ng-if="loading" class="ion-refreshing"></span>
</button>
这个功能很好,但是加载图标(ion-refreshing)会显示大约2秒钟,而$scope变量立即更新。我尝试了$scope.$apply,但似乎不是问题所在,作用域在请求后立即更新得很好。只是图标没有足够快地响应。
$scope
函数记录消息来验证了这一点,而这些函数是ng-if
用于确定是否应显示相关元素。但是,带有ng-if
的按钮保持不正确可见或隐藏,一段时间后才全部采取其预期的可见/隐藏状态。 - 我通过使用ng-hide
解决了这个问题。Angular 版本为 1.2.16。 - KajMagnus