页面刷新后,工厂的值将被删除

value of factory gets erased after page refresh

本文关键字:删除 工厂 刷新      更新时间:2023-09-26

这是我的工厂

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显示/隐藏divs(也是真/假)。

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不保持其价值?

谢谢

是的,它不保存值。为此,您必须至少使用本地或会话存储来保留这些值。

只需创建一个具有该值的cookie。搜索setCookie API 。你可以随心所欲地使用 JavaScript 或 PHP 来做到这一点。如果您仍然想使用 angular js 来做到这一点,请查看 angular-js cookie API 。