Javascript 更改路由时,rootScope未被定义
所以,当我的用户登录时,我有这个代码Javascript 更改路由时,rootScope未被定义,javascript,angularjs,angularjs-scope,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();
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是
包含菜单的页面包含在带有
的某些页面中。这些页面是按这样的路线排列的
.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
是未定义的
,我可以看到子菜单
我看不到对$rootScope.userHead的任何覆盖。当我转到另一页时,它是否会失去它的值?它不应该保持它的价值吗
我错过了什么?我该如何解决这个问题
感谢如果您重新加载页面,则JavaScript变量中存储的所有信息都将丢失$rootScope
不过是JavaScript中的一个变量。如果要存储持久性页面重新加载的内容,至少有以下几种可能性:
- 使用Cookie(在angular中,您可以使用$cookieStore)
- 使用一些新的HTML5功能,如区域设置存储、Web DB或旧的DOM存储()
- 将数据存储在服务器上
- 天然气储存
作者:Micheal 刷新时,应用程序将从零重新启动。所有服务和变量实例都被重新定义。您无法刷新角度应用程序并保留非持久变量。@Italoayers谢谢。那么,你有什么建议?我应该将userHead
保存到其他地方吗?例如,把它放在本地存储器中,而不是角形存储器中?也许吧。但是,如果在启动应用程序时,您使用LoginService查看用户是否已登录,或者类似的情况,您可以在该服务中设置此配置。如果您理解我的意思。根范围在重置时重置,cookie或本地存储或会话存储或Windows本地存储可能会导致此问题。