2016-03-22 41 views
0

在Angular SPA應用程序中,登錄屏幕基於$ rootScope中的ng-show指令變量顯示/隱藏。Angular JS - 頁面顯示的登錄屏幕在應用程序刷新(F5)

如果用戶在主頁並刷新頁面(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; 
}); 

回答

0

使用ngcookie或pouchdb或localStorage的存儲用戶會話

這可以幫助你https://github.com/sahat/satellizer

+0

這對我有效步驟我跟着。 2)添加'ngCookies'角模塊 3)將$ cookies添加到控制器 4)if($ cookies.get(''ss =「js/lib/angular-cookies.min.js」) showLogin')!== undefined){ \t \t \t console.log(「update cookie」); \t \t \t $ rootScope.showLogin = $ cookies.get('showLogin'); \t \t \t $ cookies.put('showLogin',$ cookies.get('showLogin')); \t \t} else { \t \t \t $ rootScope.showLogin = true; \t \t \t console.log(「add cookie」); \t \t \t $ cookies.put('showLogin',true); \t \t} – Madhu

0

您需要實現某種類型的狀態存儲功能。這可以使用$cookies或本地存儲來完成(這裏有很多第三方實現)。

0

無論何時刷新頁面,所有javascript和其他資源都會再次加載,因此angularjs將基本上用初始值重新初始化$rootScope,並且所有綁定的值都將丟失。

我會建議根據您的使用情況和要求使用網絡存儲(本地/會話存儲)或cookie。

相關問題