2016-08-08 3 views
0

У меня очень простой код, используя службу $ location в угловом режиме, которая не работает.

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

Я просто хочу, чтобы подтвердить, если пользователь хочет покинуть страницу, но она не будет работать, если я пытаюсь изменить адрес в строке или, если нажать кнопку назад в браузере.

Вот скрипач: http://jsfiddle.net/5dnm2/19/

+0

Что такое '$ offFunction()'? –

+0

Если вы вводите новый адрес в адресной строке, то приложение не знает, что URL-адрес касается изменения. – zeroflagL

ответ

0

Вы должны добавить $ места для поставщика инициализации. http://jsfiddle.net/5dnm2/41/ run(function($rootScope, $location) {...})

+0

Хорошо, это работает, но это не служит цели, которую я хотел. Это показывает только диалоговое окно подтверждения при загрузке страницы. Я хотел показать подтверждение, когда пользователь покидает страницу (например, используя окно event.onbeforeunload на простом javascript). Фактически я хочу, чтобы этот код запускался, когда пользователь нажимает кнопку «Назад» в браузере, но не может заставить его работать. Есть идеи? – user3483282

+0

Если я правильно вас понимаю, вы можете попробовать равные URL: '$ scope. $ On ('$ locationChangeStart', function (event, next, current) { if (next! == current) { var answer = подтвердить («Вы уверены, что хотите перейти от этой страницы»); if (! answer) { event.preventDefault(); } } }); ' –

Смежные вопросы