所以这是我的工厂
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;
}
]);
然后,在另一个页面的控制器中,我显示/隐藏div,根据userFactory.isCrazy
(也是真/假)。
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
没有保持其价值?
由于
答案 0 :(得分:1)
是的,它没有保存价值。为此,您必须至少使用本地或会话存储来保留这些值。
答案 1 :(得分:1)
只需创建一个包含该值的cookie即可。搜索setCookie API
。您可以根据需要使用JavaScript或PHP来完成。
如果您仍想使用角度js,请检查 angular-js cookie API 。