event.preventDefault() not working for routeChangeStart in angularjs app
angularjs, angularjs-directive, javascript, routes
Solution
I had lots of trouble finding this one, but instead of the "$routeChangeStart" event, you can listen to the "$locationChangeStart" event, for which you can prevent default:
$scope.$on("$locationChangeStart", function(event, next, current) {
if (!confirm("You have unsaved changes, continue navigating to " + next + " ?")) {
event.preventDefault();
}
});
You could also always prevent default, store "next", and display a clean JS modal and decide asynchronously.
$locationChangeStart is currently undocumented but referenced here : https://github.com/angular/angular.js/issues/2109
Problem
Hope any angularjs gurus can help me with this.Here is my angularjs code ``` $scope.$on('$routeChangeStart', function(event, next, current) { if ($scope.myForm.$dirty) { if(!confirm("Unsaved, do u want to continue?")) { event.preventDefault(); } } }); ``` It alerts in browser back button click when data is dirty, but on clicking cancel or ok it still completes the route change.Seems like `event.preventDefault()` is not working. Can any one point out what may be wrong