2014-03-27 11 views
7

Ich versuche, das Ereignis $ on "$ locationChangeStart" in Angular JS anzuhören und das Ereignis unter bestimmten Umständen zu verhindern. Sobald ich event.preventDefault() mache, wird das $ on "$ locationChangeStart" -Ereignis erneut ausgelöst. Ist das ein Angular JS Bug?

$rootScope.$on "$locationChangeStart", (event, next, current) -> 
    if doNotLeave 
    event.preventDefault() 

Vielen Dank im Voraus, Steff

+0

Was macht event.stopPropagation()? – Ashesh

+0

Welchen Routing verwendeten Sie, als das passierte? –

+0

Wurde das jemals gelöst? – Starfs

Antwort

4

Okey, ich habe eine sehr ähnliche Situation gesehen und eine mögliche Ursache gefunden. Angular (oder unser benutzerdefiniertes Routensegment-Routing, nicht sicher, welches) wird manchmal eine URL nach dem Routing abschneiden. Versuchen Sie Logging next und current und sehen, welche Routen genau Sie beschäftigen. In unserem Fall war der Wechsel von http://wof/Admin#/someRoute zu http://wof/Admin#/someRoute/ (Hinweis Schrägstrich hinzugefügt). Nachdem wir dies erklärt haben - es hat funktioniert.

+0

Sehr helfende Frage und Antwort. Ich glaube, dass dieses Problem nur auftreten wird, wenn Sie den Hash mit nativem Skript festlegen. Die Verwendung des angularen $ location-Objekts führt niemals zu doppelten Einbrüchen (und fügt immer den Schrägstrich hinzu). –

+0

Bei weiterer Überprüfung sehe ich nicht den Schrägstrich, sondern ein Doppelpfandzeichen. –

+0

Ich erlebe das gleiche Problem genau so, wie Sie es hier beschreiben. Ich frage mich, was Ihre Lösung war, wenn Sie sagen, "sobald wir das berücksichtigt haben", was bedeutet, wie haben Sie es davon abgehalten, den Schrägstrich überhaupt hinzuzufügen? – Starfs

Verwandte Themen