rootScope 在更改路由时变得未定义

rootScope gets undifined when changing route

本文关键字:未定义 路由 rootScope      更新时间:2023-09-26

所以,当我的用户登录时,我有这个代码

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;将根据其值(真/假)显示/隐藏子菜单。子菜单的 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.userHead undifined,我可以看到子菜单。

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

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

谢谢

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

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

作者:米歇尔。