2016-08-08 6 views
0

Ich habe einen sehr einfachen Code mit dem $ Standortdienst in eckigen, der nicht funktioniert.

angular.module("app",[]).run(function($rootScope) { 
    var $offFunction = $rootScope.$on("$locationChangeStart", function(e) { 
     if (confirm("Are you sure")) 
     return $offFunction(); 
     return e.preventDefault(); 
    }); 
}); 

Ich mag nur bestätigen, wenn der Benutzer die Seite verlassen will, aber es wird nicht funktionieren, wenn ich versuche, die Adresse in der Bar zu ändern oder wenn ich die Zurück-Button im Browser drücken. Hier

ist der Fiedler: http://jsfiddle.net/5dnm2/19/

+0

Was ist die '$ offFunction()'? –

+0

Wenn Sie eine neue URL in die Adressleiste eingeben, weiß die Anwendung nicht, dass die URL geändert werden soll. – zeroflagL

Antwort

0

Sie haben $ Standort für die Initialisierung Anbieter hinzuzufügen. Besuchen Sie http://jsfiddle.net/5dnm2/41/ run(function($rootScope, $location) {...})

+0

Ok, das funktioniert, aber es erfüllt nicht den Zweck, den ich wollte. Dies zeigt nur den Bestätigungsdialog beim Laden der Seite. Ich wollte die Bestätigung zeigen, wenn der Benutzer die Seite verlässt (wie das Ereignis window.onbeforeunload auf plain javascript verwenden). Eigentlich möchte ich diesen Code ausführen, wenn der Benutzer im Browser auf die Zurück-Schaltfläche klickt, aber nicht funktioniert. Irgendwelche Ideen? – user3483282

+0

Wenn ich Sie richtig verstehe, können Sie versuchen, gleiche URLs: '$ scope. $ On ('$ locationChangeStart', Funktion (Ereignis, nächste, aktuelle) { wenn (nächste! == aktuelle) { var antworten = bestätigen ('Möchten Sie wirklich von dieser Seite weg navigieren'); if (! answer) { event.preventDefault(); } } }); ' –