2014-10-19 3 views
6

Ich habe eine Anwendung, die Angular Ui-Router verwendet. Wenn der Router auf einen bestimmten Zustand eingestellt ist, möchte ich einen Timer von beispielsweise 2 Stunden haben. Während es auf einen anderen Zustand eingestellt ist, möchte ich den Zähler herunterzählen lassen. Ich möchte die verbleibende Zeit auf meinem Bildschirm anzeigen lassen.Hilft AngularJS in irgendeiner Weise, wenn es einen Dauerzähler auf meiner Webseite gibt?

Hat jemand ein Codebeispiel darüber, wie ich diese Funktionalität implementieren könnte? Wenn jemand etwas Ähnliches getan hat, würde ich mich über jeden Rat freuen, den er geben könnte.

+0

Warum setzen sie nicht in der Steuerung und Umleitung auf Countdown Ende –

+0

@MaximShoustin zurück - Ja, ich hoffe, für so etwas, aber ich habe keine Beispiele gesehen. Hoffentlich hat jemand schon so etwas getan und sie können teilen, was sie getan haben. –

+1

Tun Sie es nicht im Controller. Verwenden Sie 'onEnter' in der Zustandsdefinition – Max

Antwort

1

ich derzeit einen Countdown Dienst für diesen Zweck in meinem Projekt verwende.

  1. Start init es auf der ersten Seite

    app.controller('view1Ctrl', function($scope, $csCountdown){ 
        $csCountdown.init(2 * 3600); // 2 hours 
        $scope.countdown = $csCountdown.data; 
    }) 
    
  2. der Zähler auf der zweiten Seite

    app.controller('view2Ctrl', function($scope, $csCountdown){ 
        $csCountdown.start(); 
        $scope.countdown = $csCountdown.data; 
    }) 
    

starten können Sie: wie pro Ihre Anforderung können Sie Service wie unten verwenden Zeigen Sie den Wert auf einer beliebigen Seite mit countdown.stringValue

an
<h1>Time : {{countdown.stringValue}}</h1> 

können Sie es funktioniert sehen PLUNKER LINK. Ich habe view1 & view2 mit Übergangsanimation erstellt.

EDIT

ich aktualisieren die PLUNKER 2 ein praktisches Beispiel zu haben.

  1. Zunächst sehen Sie die Anweisungsseite, auf der der Timer auf 2 Stunden initialisiert wird.

  2. Dann auf die Fragen 1, bewegen, wo Timer

    beginnt
  3. von Frage 1 können Sie Seite gehen zu helfen, wo der Timer

  4. dann pausiert Sie zurück bewegen Frage 2, wo Timer fortgesetzt. ..

+0

Können Sie erklären, was der Unterschied zwischen den zwei Seiten ist? Es scheint, als ob die erste Seite auf zwei Stunden eingestellt ist und sich nicht ändert. Wäre es möglich, den Wert des Countdowns zu halten, nachdem ich auf die andere Seite gewechselt bin, und es fortsetzen lassen, wenn ich auf diese Seite zurückkehre? –

+0

@SamanthaJ Bitte überprüfen Sie den aktualisierten Plocker, wo der Countdown-Service im praktischen Szenario ... Prüfung Simulation verwendet wird. – harishr

+0

Warum wird dies als Antwort akzeptiert? Ich sage nicht, dass es falsch ist, aber es hält nicht die aktuelle Anzahl nach der Aktualisierung. Auch ich habe schon lange vorher geantwortet ... –

5

Sie können einen Service und eine Richtlinie für diesen Zweck kombinieren. Der Service verwendet Cookies, um den Countdown-Wert zu speichern. So wird es auch nach einer Aktualisierung weiter zählen.

können Sie starten oder Countdown von Controller stoppen:

CountdownService.startCounting(3 * 30 * 1000); // milliseconds 

Dann zeigen die verbleibende Zeit von einer Richtlinie in der Vorlage:

<countdown></countdown> 

Sie können auch den Stil der Richtlinie von Vorlage ändern .

Check out my plunker ...

+0

Vielen Dank für diese Antwort. Ich überprüfe es, um zu sehen, ob es meinen Bedürfnissen entspricht. –

+0

Ich weiß nicht, ob es genau Ihren Bedürfnissen entspricht oder nicht, aber ich denke, Sie können es nach diesem Punkt erweitern ... –

+0

Hallo, ich habe eine Prämie dafür eröffnet. Ich hoffe zu sehen, ob andere Lösungen haben. Wenn nicht, werde ich das Kopfgeld vergeben. Danke für Ihren Vorschlag. – Melina

Verwandte Themen