相关疑难解决方法(0)

当用户离开页面时在angularjs中显示警报

我是一个有角度的新蜜蜂.我正在尝试编写一个验证,在用户尝试关闭浏览器窗口时提醒用户.

我的页面v1和v2上有2个链接.当点击指向特定页面的链接时.这是重定向到v1和v2的代码

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives'])

.config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/v1', {templateUrl: 'pages/v_1.html', controller: MyCtrl1});
        $routeProvider.when('/v2', {templateUrl: 'pages/v_2.html', controller: MyCtrl2});
        $routeProvider.otherwise({redirectTo: '/v1'});
}]);
Run Code Online (Sandbox Code Playgroud)

当用户点击v1"他即将离开v1,如果他想继续"并且点击v2时,我想弹出一条消息.任何关于如何实现这一点的指示将不胜感激.

我在这里得到了一个答案,但它会在每个时间间隔后弹出消息.

更新的代码;

控制器

function MyCtrl1() {
    $scope.$on('$locationChangeStart', function (event, next, current) {
        if ('your condition') {
            event.preventDefault();

            MessageService.showConfirmation(
                'Are you sure?',
            MessageService.MessageOptions.YES_NO, {
                'YES': function () {
                    blockNavigation = false;
                    $location.url($location.url(next).hash());
                    $rootScope.$apply();
                },
                'NO': function () {
                    MessageService.clear();
                    $log.log('NO Selected')
                }
            });
        }
    });
}
MyCtrl1.$inject = [];


function MyCtrl2() {}
MyCtrl2.$inject = …
Run Code Online (Sandbox Code Playgroud)

javascript model-view-controller angularjs angularjs-directive

58
推荐指数
4
解决办法
12万
查看次数

AngularJS在浏览器关闭时删除所有cookie的方法

我已阅读其他帖子,讨论在浏览器关闭时其他技术清理浏览器cookie的方式,但没有一个显示如何让AngularJS执行此操作. 如何在浏览器关闭时触发AngularJS中的cookie删除方法运行?

在AngularJS 1.4.8中,可以使用语法删除cookie $cookies.remove('keyname').我可以编写一个方法来按名称删除所有cookie.但是,如何在浏览器关闭时确保调用cookie删除方法?如果我希望在浏览器选项卡关闭时调用该方法,语法是否有所不同?


正在进行的努力:


根据@ User2341963的建议,我run在应用程序主模块中的方法中添加了cookie删除代码.当我将它放在logout()应用程序中的其他方法时,相同的确切代码正确运行,但是当我在firefox调试器中放置断点并关闭浏览器时,我发现在浏览器关闭时,cookie删除代码永远不会运行. 当浏览器关闭时,我对AngularJS删除所有cookie的代码做了哪些具体更改?

这是应用程序主模块的代码,包括run()方法:

angular
    .module('hello', [ 'ngRoute', 'auth', 'home', 'secure', 'public1', 'navigation' ])
    .config(

            function($routeProvider, $httpProvider, $locationProvider) {

                $locationProvider.html5Mode(true);

                $routeProvider
                .when('/', {
                    templateUrl : 'js/home/home.html',
                    controller : 'home'
                })//plus other routes
                .otherwise('/');

                $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

            }
    ).run(['$cookies', '$window', '$log', function($cookies, auth, $window, $log) {

        //other stuff

        $window.onbeforeunload = function() {
            // Clearing all cookies now!
            $cookies.remove("AUTH1"); 
            $cookies.remove("AUTH2");
            $cookies.remove('procStep');
            $cookies.remove('usrname');
            $cookies.remove('exists');
            $cookies.remove('wid');
        };
    }]);
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

6
推荐指数
1
解决办法
4343
查看次数