【问题标题】:Saving the state of an AngularJS app保存 AngularJS 应用程序的状态
【发布时间】:2016-04-09 12:29:48
【问题描述】:

是否可以使用 Angular 本地存储来保存 AngularJS 应用程序的状态? 我正在创建一个相当简单的基于信息的应用程序,其中包含相当多的内容,我希望能够保存用户当前的“位置”,这样如果他们关闭应用程序然后稍后重新打开,应用程序就会在该保存点打开。

我一直在尝试了解 cookie 和本地存储并寻找相关主题,但无法找到与 AngularJS 相关的任何内容,只有 jQuery。

【问题讨论】:

  • 你应该使用本地存储而不是cookie,github.com/grevory/angular-local-storage
  • 我为此使用了 angular-local-storage (github.com/grevory/angular-local-storage)。我发现它非常稳定且有据可查。
  • 谢谢大家,我也对此进行了研究,并研究了保存输入文本效果很好,但它是保存当前浏览状态的实际能力,我正在努力解决。即,如果他们关闭页面并稍后重新打开,它将带他们回到同一个地方。不过会继续挖掘!

标签: javascript angularjs cookies local-storage angular-cookies


【解决方案1】:

您解决了这个问题吗?我通过以下三个步骤解决了它:

  1. 在我截获我拥有的权限的角度配置阶段 另外一个$transitions.onSuccess 钩子。我全都听 转换成功并存储当前状态名称 - 除非其登录或注销

    $transitions.onSuccess('*', function(trans) {
      var currentState = trans.router.stateService.current.name;
      if (currentState !== 'signin' &&
      currentState !== 'signout') {
        $localStorage.storeState(trans.router.stateService.current.name);
      }
    });
    
  2. 在登录/身份验证过程中或您检查用户是否已通过身份验证的任何地方,您会将用户重定向到某个状态并将用户重定向到之前的状态

    var previousState = $localStorage.getState() || Authentication.redirectState;
    
    if (Authentication.isAuthenticated()) $state.go(previousState);
    
  3. 在存储工厂中,我在注销时删除存储状态

【讨论】:

    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多