2017-01-20 3 views
0

Ich habe eine Anwendung, die sowohl Angular und Ruby on Rails verwendet. Einige meiner Angular-Controller erstellen $ Intervalltimer, die abgebrochen werden müssen, wenn der Benutzer zu einer neuen Seite navigiert. This Stack-Überlauf Antwort unter anderem besagt, dass die beste Lösung, den Code unten in den Winkelregler mit dem Timer einzufügen ist:

$scope.$on('$destroy', function() { 
    $interval.cancel(timerName); 
}); 

Allerdings, wenn ich dies tun und einen Haltepunkt in diesem Code festgelegt, wenn das Debuggen, Der Haltepunkt wird nie erreicht. Dies bedeutet, dass das Ereignis $destroy niemals bei Seitenänderungen ausgelöst wird. Ich frage mich, wie ich dieses Ereignis auslösen kann, oder ob es eine bessere Möglichkeit gibt, meine Timer zu beenden, wenn der Benutzer zu einer anderen Seite navigiert.

+0

Ich habe mit kantigem manchmal die Haltepunkte funktionieren nicht bemerkt. Haben Sie versucht, durch ein console.log zu ersetzen, um sicherzustellen, dass es nicht getroffen wird? –

Antwort

0

Ich bin mir nicht sicher, ob es Ihren Bedarf passt, aber Sie können diese

  1. die $ Intervall in einen Dienst Ziehen tun.
  2. Das Intervall mit dem obigen Dienst auf dem Controller/der Route auslösen, den Sie auslösen möchten.
  3. Brechen Sie den Auslöser, um den Dienst auf Routenänderung mit
Verwandte Themen