my-list
という指示文が入力データとしてarray
になりました。私はng-repeat
を使用して配列を繰り返し、リストを生成しています。 array
に多数のobjects
がある場合、リストは非常に遅く生成されます。角度コンパイルの進行中にアニメーションを表示する方法
DOM
要素が生成されている間、私はスピナーアニメーションを表示したいと思います。しかし、DOM
要素が生成されている間、UIは固定されます。
この問題の解決策があるかどうかを知りたいと思います。
my-list
という指示文が入力データとしてarray
になりました。私はng-repeat
を使用して配列を繰り返し、リストを生成しています。 array
に多数のobjects
がある場合、リストは非常に遅く生成されます。角度コンパイルの進行中にアニメーションを表示する方法
DOM
要素が生成されている間、私はスピナーアニメーションを表示したいと思います。しかし、DOM
要素が生成されている間、UIは固定されます。
この問題の解決策があるかどうかを知りたいと思います。
あなたはディレクティブで$last
プロパティを利用することができます:
指令:
app.directive("lastItemLoaded", function() {
return function(scope, element, attrs) {
if(scope.$last) {
scope.everythingLoaded = true;
scope.$apply();
}
};
}
app.controller("MainCtrl", function($scope) {
$scope.everythingLoaded = false;
});
HTML:
<div ng-repeat="thing in things" last-item-loaded></div>
<div id="mySpinner" ng-if="!everythingLoaded">
Loading. Please wait…
</div>
単純に要求する前に設定する必要がありますあなたのコントローラー変数falseのように: (非作動コード単なる一例)
$scope.someHttpRequestOnClick= function() {
$scope.requestBusy = true;
$http(request).then(onSuccess, function(response) {
onFailure(response, failure);
......
});
......
};
function onSuccess(response){
$scope.requestBusy = false;
....
}
私はそのようなHTML表示用アンギュラ材料mdProgressCircularディレクティブをお勧めします。mdProgressCircularのANG角度-材料についての詳細は
<div class="indicator" ng-if="requestBusy">
<md-progress-circular class="md-warn md-hue-3" md-diameter="80"></md-progress-circular>
</div>
https://material.angularjs.org/latest/api/directive/mdProgressCircular
解決策は、配列の集団をより管理しやすい部分にチャンクして、アプリケーションが小さな変更を消化できるようにすることですあなたはそれを消化するために別の小さな変化を起こす。また、APIにデータが存在する場合は、画面を見せなくてはならないことを示すだけで十分です。 –