Angularjs Angular JS-应用程序页面刷新(F5)上显示的登录屏幕

Angularjs Angular JS-应用程序页面刷新(F5)上显示的登录屏幕,angularjs,angularjs-directive,page-refresh,Angularjs,Angularjs Directive,Page Refresh,在Angular SPA应用程序中,登录屏幕基于$rootScope中的ng show指令变量显示/隐藏 如果用户在主页中并刷新页面(F5),登录屏幕将显示为已刷新完整页面并丢失根范围变量值 如何解决这个问题 代码示例:: <body ng-controller="mainController"> <div class="container" ng-controller="schoolLoginCtrl" ng-show="showLogin">

在Angular SPA应用程序中,登录屏幕基于$rootScope中的ng show指令变量显示/隐藏

如果用户在主页中并刷新页面(F5),登录屏幕将显示为已刷新完整页面并丢失根范围变量值

如何解决这个问题

代码示例::

<body ng-controller="mainController">
    <div class="container" ng-controller="schoolLoginCtrl"
        ng-show="showLogin">
        <form class="form-signin" ng-submit="login()">
            <h2 class="form-signin-heading">Login Page</h2>
            <label for="userName" class="sr-only">User Name</label> <input
                type="text" id="userName" ng-model="user.userName"
                class="form-control" placeholder="User Name" required autofocus>
            <label for="inputPassword" class="sr-only">Password</label> <input
                type="password" id="inputPassword" ng-model="user.password"
                class="form-control" placeholder="Password" required>
            <div class="alert alert-danger">{{errorMsg}}</div>
            <button class="btn btn-lg btn-primary btn-block" type="submit">Sign
                in</button>
        </form>
    </div>

    <div class="container" ng-show="!showLogin">
        <div ng-view></div>
    </div>


.controller('mainController', function($scope, $rootScope,
        $location) {
    $rootScope.showLogin = true;
});

登录页面
用户名
密码
{{errorMsg}}
签名
在里面
.controller('mainController',函数($scope,$rootScope),
$location){
$rootScope.showLogin=true;
});

使用ngcookie或PockDB或localstorage存储用户会话


这可以帮助您实现某种类型的有状态存储功能。这可以通过使用本地或本地存储来实现(有很多第三方实现)。

每当您刷新页面时,所有Java脚本和其他资源都会再次加载,因此angularjs基本上会用其初始值重新初始化
$rootScope
,绑定到它的所有内容都将丢失


我建议根据您的使用情况和要求使用web存储(本地/会话存储)或cookie

这对我来说很管用,我遵循了这些步骤。1) 2)添加'ngCookies'模块3)向控制器添加$cookies 4)如果($cookies.get('showLogin')!==未定义){console.log(“更新cookie”);$rootScope.showLogin=$cookies.get('showLogin');$cookies.put('showLogin'),$cookies.get('showLogin');}否则{$rootScope.showLogin=true;console.log(“添加cookie”);$cookies.put('showLogin',true);}