我的app.js
中有三条路线但是当我从创建切换到任何其他路线时,我想检查用户是否有意点击切换或是否是错误,因此会有返回弹出窗口要求用户留在页面上或离开页面。在通常情况下,它可以使用此代码:
window.onbeforeunload = confirmExit;
function confirmExit() {
return "You have attempted to leave this page. Are you sure?";
}
但由于这是一个SPA应用程序,我必须在切换路径时运行此功能:
这是我的路线
testApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/tests', {
templateUrl: 'partials/list.html',
controller: 'ListCtrl'
}).
when('/tests/:testsId', {
templateUrl: 'partials/detail.html',
controller: 'DetailCtrl'
}).
when('/create/', {
templateUrl: 'partials/create.html',
controller: 'CreateCtrl'
}).
otherwise({
redirectTo: '/tests'
});
}]);
非常感谢任何帮助。
答案 0 :(得分:0)
我想用角度指令:
.directive('confirm', [
function() {
return {
restrict: 'AEC',
link: function($scope, element) {
element.bind('click', function(event) {
if (!confirm('You have attempted to leave this page. Are you sure?')) {
event.preventDefault();
return false;
}
});
}
};
}
]);
并在您的HTML中:
<a href="/route" confirm>link</a>
这样,标准链接重定向将被截获,并且只有在用户确认时才会进行重定向。
工作小提琴:http://jsfiddle.net/HB7LU/3119/
编辑删除了jquery引用+ jsfiddle链接
用于全局重定向拦截的edit2:(如退格键或页面上任何点击的链接),请参阅此小提琴http://jsfiddle.net/9MnE9/124/
在这里,我使用$routeChangeStart
来观看任何位置变化。