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.
});
}
如果这与其他 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.
});
}