AngularJS 微调器未显示,可能是因为 http.get 发射太快

AngularJS spinner not showing, possibly due to http.get firing too quick

如果这与其他 post 重复,我深表歉意,但我的声誉点数太低,无法对它们发表评论。当我启动 http get 时,我有以下内容来显示微调器。

HTML:

<button class="btn btn-primary" ng-click="loadRemedyData(showsitegroup.groupSelect)" 
    style="font-size:12px">
View UnScheduled WO's
<i ng-show="loading" class="fa fa-refresh fa-spin" ></i></button>

控制器:

$scope.loading = false;

$scope.loadRemedyData = function(qName) {
    //Injects scope from Remedy Database JSON
    $scope.loading = true;
    $http.get("/openremedywos?qName=" + qName)
        .then(function (response) {$scope.newdevices = response.data;});
    $scope.loading = false;
  }

如果我注释掉将加载标志更改回 false 的最后一行,微调器显示并保持 运行,显示证明它正在初始化。

问题是,对于上面的情况,我假设它没有显示,因为它移动到最后一个标志变化很快,即使它可能需要 20-30 秒才能显示范围。

我明白 20-30 秒不是很多,但我想让它显示微调器,以防止不耐烦的用户认为它不工作,通过显示正在进行的微调器。

这是因为您在将 $scope.loading 分配给 false 之前没有等待 http return。

试试这个:

$scope.loadRemedyData = function(qName) {
//Injects scope from Remedy Database JSON
$scope.loading = true;
$http.get("/openremedywos?qName=" + qName).then(function (response){
    $scope.newdevices = response.data;
    $scope.loading = false; // brought it inside. Where it will wait for the http to get response.
});
}