首页 > 解决方案 > 防止浏览器在导航到另一个页面时重新加载页面 - angularjs

问题描述

我试图防止使用 angularjs 重新加载页面。目前使用我拥有的代码,该页面不会重新加载,但它永远不会导航到另一个页面。这是代码

 $scope.login = function(){
        $scope.loading="loading";
        Service.authenticate($.param({
            username : $scope.username,
            password : $scope.password,
        }), function(res) {
            if(res !== undefined){
                if(res.success){


                    var windowElem = angular.element($window);
                      windowElem.on('beforeunload', function (event) {

                      event.preventDefault();
                      $(location).attr('href', '/dashboard');
                      })

                }else{

                    $scope.error = res.message;

                }
            }

我不知道我是否要重新发明轮子,但页面在不重新加载的情况下无法导航

标签: javascriptangularjs

解决方案


我的建议是使用 uirouter ( https://github.com/angular-ui/ui-router/wiki )。

在您的应用程序中注册模块

角度 .module('myApp', [ ... 'ui.router', ... ])

在配置函数中配置 $stateProvider

.config( 函数 ( $stateProvider, ... ) {

    $stateProvider
        .state('main.login', {
            url : "/",
            views : {
                "login" : {
                    controller : 'LoginCtrl',
                    templateUrl : 'views/login/login.html'
                }
            }
        })

...

成功登录后,您可以使用 $state 服务来更改应用程序的状态(即页面),显然无需重新加载页面。

$state.go('main.whereverRegisteredState', {some: data});

我不会向你解释应用程序设置、控制器、视图或服务注入,只需遵循官方文档即可。

希望能帮助到你


推荐阅读