Kann ng-show Direktive verwendet werden, mit einer Verzögerung
Ich habe ein spinner ist, wird dies mit ng-show="loading>0"
Gibt es eine Möglichkeit, kann ich die Anzeige dieser spinner mit einer Verzögerung (etwa 1 Sekunde)?
Kann ich nicht mit einem timeout, weil mit mehreren Anfragen de laden Zähler aus dem Takt geraten.
Was ich brauche, ist eine Verzögerung, die auf den ng-show
per css transition oder ähnliche
- Hast du bereits einen Blick in die docs? link Blättern Sie nach unten und sehen Sie ein Beispiel mit übergangs-und ng-show
- Was sind Sie wirklich auf der Suche zu erreichen, hier? Sie wollen eine Verzögerung, so dass für schnelle Vorgänge, die Sie nicht nur blinken an und aus, aber für längere Operationen zeigt es sich? Nur eine Allgemeine be-Indikator?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein einfacher Ansatz, der arbeitete für meine Bedürfnisse. Je nachdem, was Ihr geschehen, und Sie würde die tie-Funktion
setDelay()
um das element. Zum Beispiel, in meinem Fall, ich BandsetDelay()
zu einem "input".Auslösen HTML:
In Ihrem controller, fügen Sie eine einfache Funktion
setDelay
verändern wird die fahne$scope.delay
:Dann können Sie einfach
$scope.delay
als ein flag in ng-show:Und zeigen Inhalt nach fertig-laden:
Nun, jedes mal, wenn der Benutzer einen neuen Wert in das dropdown-Menü, es löst
$scope.delay
festgelegt werden, umtrue
verursacht der spinner zu zeigen, und wenn es erreicht200
es wirdfalse
verursacht der spinner zu verstecken.Mein Verdacht ist, dass Sie sind auf der Suche für ein Allzweck-spinner, beinhaltet eine Verzögerung. Der standard, zeigen nach
200ms
oder sowas.Dies ist ein perfekter Kandidat für eine Richtlinie, und eigentlich Recht einfach zu bewerkstelligen.
Ich weiß, das ist ein langer code-Beispiel, aber der primäre Teil ist die Richtlinie. Es ist ziemlich einfach.
Hören Sie ein paar scope-Variablen und zeigt nach einer konfigurierbaren Verzögerung. Wenn der Vorgang dauert länger als die Verzögerungszeit, wird es einfach abgebrochen und nie auftauchen.
JS:
HTML:
Denke ich eine Reine CSS-Lösung ist der beste Weg, es zu tun.
Hier ist ein plunker zeigen, wie es zu tun. Mit ng-animate-Klassen für den übergang und die Anwendung eines transition-delay mit einem übergang von 10ms (0 transition ist nicht die Arbeit mit css).
Relevante Teil des Codes :
Der einzige Grund für die Verwendung einer benutzerdefinierten Richtlinie für es wäre mit dieser Tonnen-mal in den code mit verschiedenen Verzögerungen Wert. Eine benutzerdefinierte Richtlinie ermöglichen mehr Flexibilität bei der Verzögerungszeit.