当前位置: 首页 > 面试题库 >

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

邹祺
2023-03-14
问题内容

我是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'});
}]);

当用户单击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 = [];

问题答案:

确认对话框的代码可以这样写:

$scope.$on('$locationChangeStart', function( event ) {
    var answer = confirm("Are you sure you want to leave this page?")
    if (!answer) {
        event.preventDefault();
    }
});


 类似资料:
  • 问题内容: 我正在使用Javascript命令:setInterval。我喜欢在用户离开页面时停止它。 该代码似乎运行良好:http : //jsfiddle.net/PQz5k/ 它检测用户何时离开页面。当用户单击链接以转到其他HTML页面或URL,或者用户重新加载页面时,它将执行Javascript代码。 但是,当我从一个AngularJS模板转到另一个模板时,它不起作用。例如,如果我在tem

  • 我想在用户离开angular 2应用程序的特定页面之前警告他们未保存的更改。通常我会使用<代码>窗口。onbeforeunload,但这不适用于单页应用程序。 我发现在角1中,您可以连接到事件以为用户抛出框,但我还没有看到任何内容说明如何让它在角2中工作,或者该事件是否仍然存在。我还看到了为提供功能的ag1插件,但同样,我还没有看到任何将其用于ag2的方法。 我希望其他人能找到解决这个问题的办法;

  • 问题内容: 我希望用户看到双大括号,但是Angular会自动将其绑定。这是与该问题相反的情况,即他们不希望在加载页面时看到用于绑定的花括号。 我希望用户看到以下内容: 但是Angular会替换为值。我认为这可能有效,但是angular仍然将其替换为值: plnkr:http://plnkr.co/edit/XBJjr6uR1rMAg3Ng7DiJ 问题答案: 文档@ ngNonBindable

  • 问题内容: 我希望我的ReactJS应用在离开特定页面时通知用户。特别是一条弹出消息,提醒他/她进行以下操作: “更改已保存,但尚未发布。现在执行吗?” 我应该在全局范围内触发此操作,还是可以在react页面/组件内完成此操作? 我还没有发现任何关于后者的信息,我宁愿避免使用第一个。除非当然是其规范,否则这使我想知道如何执行这样的事情而不必向用户可以访问的所有其他可能的页面添加代码。 欢迎有任何见

  • 问题内容: 在stackoverflow中,如果您开始进行更改,然后尝试离开该页面,则会显示一个javascript确认按钮并询问:“确定要离开该页面吗?” blee blah bloo … 之前有人实施过此功能,如何跟踪所做的更改?我相信自己可以做到,我正在尝试向您的专家学习良好做法。 我尝试了以下操作,但仍然无法正常工作: 有人可以举一个例子吗? 问题答案: 更新(2017) 现在,现代浏览器

  • 移动端如果使用异步组件加载那么还是需要一点等待时间的,在网络慢时等待时间会更长。显示Loading状态缓解一下用户等待情绪就十分重要。 如果你使用vue-router和vuex,那么可以很容易实现。 首先,注册一个module来保存状态 const store = new Vuex.Store({}) // 这里你可能已经有其他 module store.registerModule('vux'