【发布时间】:2016-02-29 11:16:54
【问题描述】:
这就是我的工厂
app.factory('userFactory', function(localStorageService, $http, $rootScope) {
var myUser = {};
myUser.isCrazy = false;
return myUser;
});
当用户登录时,在登录控制器中,我从数据库中获取一些数据并使用 if/else 来决定用户是否疯狂,所以我有
app.controller('loginController', ['$scope', 'localStorageService', '$location','userFactory','$rootScope',
function ($scope, localStorageService, $location, userFactory, $rootScope ) {
userFactory.isCrazy = true;
}
]);
然后,根据userFactory.isCrazy(也是真/假),在另一个页面的控制器中显示/隐藏 div。
app.controller('anotherPageController' ,['$scope', '$filter', '$rootScope', 'userFactory','localStorageService',
function ($scope, $filter, $rootScope, userFactory, localStorageService) {
if(userFactory.isCrazy == true){
$scope.myMessage = true;
}
}
]);
$scope.myMessage的html是
<div ng-hide="myMessage">
这是我的问题。
登录后,isCrazy 为真。当我第一次访问该页面时,根据anotherPageController,消息被隐藏,isCrazy 仍然是真实的。都很好。
如果我点击刷新,isCrazy 会返回 false 并且消息不再隐藏。
我在这里缺少什么?为什么isCrazy 不保值?
谢谢
【问题讨论】:
-
因为你刷新了页面,这就是原因。
-
@Jai 那么,有没有办法让 var 保持持久,分散刷新,只使用 Angular?谢谢
-
使用
$localStorage。 -
“另一个页面的控制器”是指另一个页面上的控制器。你确定你的意思是这个还是同一页面上的另一个控制器?因为前者和页面刷新的效果一样。
-
@zeroflagL 不,我实际上是指另一个页面上的控制器。无论如何,我会使用
localStorage。
标签: javascript angularjs