Ecco un approccio più semplice che ha lavorato per le mie esigenze. A seconda di quale sia la tua azione, legherei la funzione setDelay()
all'elemento. Ad esempio, nel mio caso ho legato setDelay()
a un input selezionato.
trigger HTML:
<select class="first-option"
ng-change="setDelay()"
ng-options="o.label for o in download.options"
ng-model="optionModel" required>
</select>
nel controller, aggiungere una semplice funzione setDelay
che cambierà la bandiera $scope.delay
:
$scope.setDelay = function(){
$scope.delay = true;
$timeout(function(){
$scope.delay = false;
}, 200);
};
Poi, si può semplicemente utilizzare $scope.delay
come una bandiera in ng- mostra:
<div class="loading-div" ng-show="delay">
<img src="loading_spinner.gif">
</div>
E mostra il contenuto af ter carico fatto:
<div ng-show="!delay">
Content is loaded.
</div>
Ora, ogni volta che l'utente seleziona un nuovo valore nel menu a tendina, si innescherà $scope.delay
da impostare per true
causando il filatore di mostrare, e quando raggiunge 200
, sarà impostato su false
causando la chiusura dello spinner.
Hai già esaminato i documenti? [link] (https://docs.angularjs.org/api/ng/directive/ngShow) Scorri verso il basso e vedrai un esempio con transizione e ng-show – graphefruit
Cosa stai cercando di ottenere qui? Si desidera avere un ritardo in modo che per operazioni veloci non solo * lampeggi * e si spenga, ma per operazioni più lunghe viene visualizzato? Solo un indicatore di caricamento generico? – Josh