【问题标题】:value of factory gets erased after page refresh页面刷新后工厂的值被删除
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 那么,有没有办法保持 var 持久化、分散刷新,只使用 Angular?谢谢
  • 我看到你正在使用 localStorageService。它可以为您带来像这样存储这些值的可能性:localStorageService.set(key, val); var val = localStorageService.get(key);
  • 是的,毕竟我会使用localStorageService,我没有看到其他解决方案。谢谢
【解决方案2】:

只需创建一个具有该值的 cookie。搜索setCookie API。您可以根据需要使用 JavaScript 或 PHP 来完成。 如果您仍想使用 Angular js,请查看 angular-js cookie API

【讨论】:

  • 啊哈,谢谢伙计。我已经使用localStorageService。那么,有没有办法只使用 Angular 来保持 var 持久、分散刷新?谢谢
  • ´setCookie´ 不依赖于框架。是一个 JavaScript 预定义函数。
猜你喜欢
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2017-05-03
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多