【发布时间】:2013-03-09 21:33:57
【问题描述】:
当用户单击<button> 时,我会发出$http 请求,然后我会在屏幕上禁用/隐藏/显示几个元素,直到请求返回success 或error
有没有办法知道$http 还没有回复?我现在这样做的方式是我的控制器中有一个名为 $scope.requesting 的变量,然后我在我的 HTML 页面中使用它,如下所示:
<img src="img/loader.gif" ng-show="requesting" />
所以基本上当$scope.requesting 为真时,显示旋转的ajaxyish 加载器。
如果可能的话,我想放弃$scope.requesting 并使用$http 提供的任何东西,如果有的话。
登录控制器
function LoginForm($scope, $http)
{
$scope.requesting = false;
$scope.login = function()
{
$scope.requesting = true;
$http.post('resources/request.php', data, {timeout:20000})
.success(function(data, status, headers, config)
{
$scope.requesting = false;
})
.error(function(data, status, headers, config)
{
$scope.requesting = false;
}
);
}
}
【问题讨论】:
-
+1 我做同样的事情,但在完成与成功或错误时关闭请求。目前想不出更好的方法。
-
This 似乎是您正在寻找的东西。我懒得测试它并将其变成正确的答案。也许您可以发布最终结果作为答案。
-
@TrevorSenior 很高兴知道,我不是唯一一个这样做的人。德米特里的回答似乎很有希望。昏昏欲睡,行为肯定存在,只是比我目前的解决方案复杂一点
-
@Ronnie 当您询问“
$http提供的任何内容”时,您所谈论的正是$httpProvider。我也觉得这很复杂,但恐怕你得硬着头皮。
标签: javascript angularjs