[Angularjs] 角度ng-if或ng-show響應慢(2秒延遲?)


Answers

我遇到了同樣的問題,並使用帶有'隱藏'類名的ng-class來隱藏元素,而不是使用ng-if或ng-show / ng-hide。

Question

我正在嘗試在請求繁忙時顯示或隱藏按鈕上的加載指示器。 我通過在加載請求或加載完成時更改$ 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>

這工作正常,但加載圖標(離子刷新)顯示約2秒,而$ scope變量立即更新。 我嘗試了$ scope。$ apply但這似乎不是什麼錯誤,範圍在請求後立即更新。 這只是圖標沒有足夠快速響應。

謝謝你幫我理解這個!




我遇到了類似的問題,我使用$scope.$evalAsync()來強制更新綁定。

它就像一個魅力。

避免使用$scope.$apply因為它可能與已經運行的$ digest階段衝突。

if(selectedStatistics.length === 0 || selectedWorkgroups.length === 0){
    ctrl.isSaveDisabled = true;
    $scope.$evalAsync();
} else{
    ctrl.isSaveDisabled = false;
    $scope.$evalAsync();
}



Links