更改路由时,rootScope会自动化

时间:2016-02-26 16:01:51

标签: javascript angularjs angularjs-scope

因此,当我的用户登录时,我有这个代码

var promise = UserFactory.doLogin(userCredentials);

promise.success(function (data, status) { 

  //set some localstorage vars
  //only on login's success get additional data

   var anotherPromise = UserDataFactory.getUserData();                                   
    anotherPromise.success(function (data, status){                                      
           if(data.code == 2){                                                     
               $rootScope.userHead = true;
             }

});

$rootScope.userHead = true;将根据其值(true / false)显示/隐藏子菜单。子菜单的HTML是

<div class="panel panel-default text-center" style="text-align: center;" ng-hide="userHeader">

包含该菜单的页面包含在<div id="submenu" ng-include="'submenu.html'" ></div>的某些页面中。那些页面是在这样的路线

            .when('/user', {                    
               templateUrl: 'user.html',                         
               controller: 'userController',
               animation: 'second',
               access: {
                    requiredLogin: true
                }
            }) 
           //user.html includes menu with ng-include="'submenu.html'"

当我转到用户页面时,$rootScope.userHead有一个值,子菜单应该是隐藏的。如果我点击刷新,则$rootScope.userHeadundifined,我可以看到子菜单。

我没有看到任何覆盖$rootScope.userHead。当我去另一页时,它是否会失去价值?它不应该保持其价值吗?

我错过了什么?我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

如果您重新加载您的网页,您存储在 JavaScript变量中的所有信息都丢失$rootScope只不过是JavaScript中的一个变量。如果您想存储持续重新加载页面的内容,则至少有以下几种可能:

  • 使用Cookie(角度可以使用$ cookieStore)
  • 使用一些新的HTML5功能,例如Locale Storage,Web DB或旧DOM存储(http://en.wikipedia.org/wiki/Web_storage
  • 将您的数据存储在服务器上
  • ngStorage

作者:迈克尔。