Angularjs 会话存储和范围

2024-03-14

有人知道为什么我的范围变量没有更新吗?这让我难以置信。 sessionStorage 变量很好,但是当我在范围变量中定义它们时......我收到“未定义”错误。我已经修改了 $scope.$apply 但显然范围已经被消化了......:S请帮助新手。

  if(sessionStorage.loggedIn){

    $scope.user = sessionStorage.user;  
    $scope.user.gravatar = sessionStorage.gravatar;
    console.log($scope.user.gravatar);
    console.log('Session variable is active');
    $scope.loggedIn = sessionStorage.loggedIn;

  }

完整代码:

app.controller('loginCtrl', ['$scope','$route','Auth','$modal','$timeout', function($scope,$route,Auth,$modal,$timeout){

  if(sessionStorage.loggedIn){

    $scope.user = sessionStorage.user;  
    $scope.user.gravatar = sessionStorage.gravatar;
    console.log($scope.user.gravatar);
    console.log('Session variable is active');
    $scope.loggedIn = sessionStorage.loggedIn;

  }

  $scope.login = function(){
    Auth.save({
      'username': $scope.username,
      'password': $scope.password
    },function(data) {
      $scope.loggedIn = true;
      $scope.user = data.user;
      $scope.user.gravatar = data.gravatar;

      sessionStorage.loggedIn = $scope.loggedIn;
      sessionStorage.user = data.user; 
      sessionStorage.gravatar = data.gravatar;
      $route.reload();

    },function(response){
      $scope.flash = response.data.flash;   
      $scope.pop = true;    
      $timeout(function(){$scope.pop = false;}, 3000);
    })

  };

  $scope.logout = function (){
    Auth.get({},function(){  
      delete sessionStorage.user;
      delete sessionStorage.gravatar;
      delete sessionStorage.loggedIn;
      $scope.loggedIn = false;
      $timeout(function(){$route.reload();}, 1000);
    })
  };


}]);

事件链摘要:

1)用户登录

2)成功登录后,用户的详细信息(json对象)存储在sessionStorage.user = data.userdata.user 变量通常包含此类信息{id: 1, username: "user123", firstname: "", lastname: "", email: "[email protected] /cdn-cgi/l/email-protection"}- 用户的 gravatar 哈希值也存储在 sessionStorage.user.gravatar 变量中。

3) 如果用户注销,sessionStorage 变量将被删除。

4)但是,如果用户仍然登录,刷新/重新加载页面(从浏览器),sessionStorage变量仍然处于活动状态,并且仍然包含数据,BUT由于某种原因,当我设置范围变量时,例如。$scope.user = sessionStorage.user-- 尽管 sessionStorage.user 完全可行,但范围变量仍然未定义。问题似乎与范围有关。


在存储到 sessionStorage 之前,您需要将用户对象序列化为 JSON,因为它是作为字符串值的集合实现的。

尝试这样的事情

 sessionStorage.user = JSON.stringify($scope.user);

进而

 $scope.user = JSON.parse(sessionStorage.user);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angularjs 会话存储和范围 的相关文章

  • 具有动态过滤标准的 JS Array.filter

    如何动态声明一组过滤条件而无需指定过滤器的数量 例如 如果我有一组数据 如下所示 var data item type wood size 10 item type wood size 8 item type metal size 8 我知
  • Canvas drawImage 内联 svg 在 Firefox 上不起作用

    这是一个例子 它采用 svg 并将其转换为画布 http jsfiddle net Na6X5 944 http jsfiddle net Na6X5 944 var can document getElementById canvas1
  • 在 Android Webview 中加载 Angular JS 网站的问题

    大家好我正在尝试加载GTV http gtvqa com Android WebView 中 它在移动浏览器中加载得很好 但在 webview 中则不行 这是我的代码 WebView theWebPage new WebView this
  • 在复选框内映射复选框 ReactJS

    我有一个函数 一旦主复选框被选中 就会触发子复选框 并且所有这些复选框都是从 JSON 映射的 主复选框 最高级别 及其下面的所有子复选框 第二级别 都会在单击时显示 并且效果很好 我想要显示的是单击时主复选框 第三级别 的子复选框2 级项
  • 数字和数字对象有什么区别?

    存储在普通变量中的数字有什么区别 var foo 5 和一个数字对象 var bar new Number 5 数字对象可以用来做什么 A Number对象包含一些有用的方法和属性 例如 数字对象方法 Method Description
  • jQuery的$如何既是函数又是对象?

    我的意思是对象 object Object 它是怎么做的 selector and fn init同时 你能给我一个简单的例子吗 这并不是 jQuery 独有的 而是 javascript 的一个方面 所有函数都是对象 例如 var f f
  • 使用 jQuery 触发真实事件

    看来 jQuery 的trigger 仅运行与 jQuery 绑定的事件处理程序 我有一些使用本机浏览器事件绑定的模块 使用来自的代码https stackoverflow com a 2676527 https stackoverflow
  • 如何使用 Angularjs 检查模块中的指令或控制器是否可用

    在 angularjs 中 给定一个模块 如何检查给定一个模块是否存在指令 控制器 我有一个模块 我想知道是否已加载某些特定指令 下面是一些示例代码 var module angular module myModule check if c
  • 在 TypeScript 中迭代对象的键和值

    在纯 JavaScript 中 我们可以迭代对象属性和值 如下所示 const values Object keys obj map key gt obj key 在 TypeScript 中 此语法是错误的 因为 TS 编译器显示以下消息
  • 谁添加“_”单下划线查询参数?

    我有一个在 Apache 上运行的 PHP 服务器 我收到很多类似这样的请求 10 1 1 211 02 Sep 2010 16 14 31 0400 GET request 1283458471913 action get list HT
  • 如何在不知道id的情况下从内页获取父iframe元素?

    让我们想象一下我有这样的东西 div div test html 是空页面 自定义hash属性始终具有不同的值 出于安全原因两个页面位于同一域 iframe 元素的数量和顺序是随机的 我的问
  • 用 JavaScript 改变文本颜色?

    我想在单击按钮时更改标题的颜色 这是我的代码 但它不起作用 我不明白为什么不 var about function init about document getElementById about innerHTML about style
  • 在 Photoshop 中使用 javascript 修改文本项的内容

    我知道如何使用这样的代码在 Photoshop 中设置文本项的内容 var al doc activeLayer if al kind LayerKind TEXT get the textItem var ti al textItem c
  • React:在哪里扩展对象原型

    我使用创建了一个纯 React 应用程序创建反应应用程序 https github com facebookincubator create react app 我想延长String类并在一个或多个组件中使用它 例如 String prot
  • 接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足

    我正在使用 Angular 7 2 当我进入ng serve 我面临以下问题 致命错误 接近堆限制的无效标记压缩分配失败 JavaScript 堆内存不足 这意味着什么 我该如何解决这个问题 完整的错误消息是 FATAL ERROR Ine
  • ajaxStart 和 ajaxStop 与 fetch API 等效

    我正在尝试将 API 调用从使用 jQuery ajax 迁移到使用 Fetch API 我使用 jQuery ajaxStart 和 ajaxStop 在服务器调用期间显示加载旋转器 我正在运行多个并行服务器请求 我希望旋转器在第一个请求
  • 通过 Javascript 填充 ReactJS HTML 表单

    我正在开发一个应用程序 在打开第 3 方网站后 我可以在浏览器上下文中运行我自己的 Javascript 作为一个基于reactjs构建并具有登录表单的示例网站 您可以参考此链接 我正在尝试在reactjs生成的表单中填写用户名和密码 但是
  • 如何将所有后代节点和链接设置为与 2 级祖先相同的颜色?

    我有一个 d3 js 树 其后代节点接收其 2 级祖先的节点颜色 这在级别 2 到级别 3 之间有效 但在级别 4 及以上级别停止工作 相关代码 var colourScale d3 scale ordinal domain MD Prof
  • 嵌套对象的 setState

    我有一个嵌套对象作为状态 并且在组件中有一个表单 我正在考虑每次用户在表单中输入某些内容时更新状态 并且为了避免为每个输入创建许多函数 我正在考虑使用 switch 创建单个函数 使用 switch 创建单一函数是个好主意吗 如何更新对象的
  • localStorage 获取 NULL?

    我不知道为什么 因为我之前已经这样做过并且工作正常 我认为这可能是因为浏览器问题 错误 localStorage setItem foo bar alert localStorage getItem foo 我使用的是 Firefox 3

随机推荐

  • Rails 控制台未将 SQL 语句输出到我的开发日志

    当我通过本地主机访问 Webrick 服务器时 或者当我运行 Rails 迁移时 我的development log 会被正确写入 但是 当我使用 rails c 启动 Rails 控制台 然后尝试创建一个新的数据库对象并通过 user s
  • WSO2AM - SAML - 提供的授权无效

    我正在将 WSO2AM 与我们内部专有的身份提供商 IDP 集成 我正在关注 wso2 文档 与 OAuth2 交换 SAML2 承载令牌 SAML 扩展授予类型 https docs wso2 com display AM210 SAML
  • iOS CoreLocation 检查 CLLocation 时间戳以使用它

    如何检查 CLLocation 对象并决定是要使用它还是丢弃结果并获取新的位置更新 我在 CLLocation 上看到了时间戳属性 但我不确定如何将其与当前时间进行比较 另外 在我比较时间并发现以秒为单位的差异之后 差异应该在什么值以下才能
  • 绘制并填充自定义形状

    我正在尝试使用 Android 中的 Path 对象创建自定义形状 但遇到了一个奇怪的问题 我想要实现的目标如下图所示 这是我用来绘制和填充形状的代码 public class BallView extends RelativeLayout
  • Linux 中的调度:在计算机空闲时运行任务(= 无用户输入)

    我想跑折叠 home http folding stanford edu 我的 Ubuntu 8 10 机器上的客户端仅在空闲时运行 因为该程序消耗大量 RAM 我所说的 空闲 是指没有用户活动 键盘 鼠标等 时的状态 由于 F H 具有最
  • 有 JPasswordField 的替代方案吗?

    当输入如下密码时 yeast bulk seize is shows pain 每个人都可以听到敲击空格键的声音 因此在密码字段中显示空格似乎也是合乎逻辑的 所以我想要一些能够展示的东西 代替 这将使打字变得更容易 同时几乎不会降低安全性
  • Webpack + Babel 错误

    我正在尝试配置 webpack 并让一切正常运行 但现在遇到了同样的错误 我梳理了其他一些帖子 这些帖子似乎是通过纠正拼写 语法错误来解决的 但我似乎无法找出代码中的任何错误 是不是有更严重的事情发生了 ERROR in src compo
  • 带有错误模块“main:Main”的 stack ghci 在多个文件中定义:

    我有一个小的 haskell 程序 它可以使用堆栈构建和执行 当我开始时stack ghci我收到一条错误消息 我不明白并且无法继续 GHCi version 8 10 4 https www haskell org ghc for hel
  • 来自本地的 IAM SAML 联合失败

    我在本地虚拟机中设置了 openldap 和 shibboleth idp 并在 aws 中创建了身份提供商并上传了元数据 在元数据中 url 指向我的本地 IP 地址 例如 SingleSignOnService Binding urn
  • 推导 pytorch 网络的结构

    对于我的用例 我需要能够采用 pytorch 模块并解释模块中的层序列 以便我可以以某种文件格式在层之间创建 连接 现在假设我有一个简单的模块 如下所示 class mymodel nn Module def init self input
  • 无法解析符号 DrawerLayout

    我正在尝试实现导航抽屉 如下所示 http developer android com training implementing navigation nav drawer html top http developer android
  • 在 HTML 链接中使用 onClick 传递多个值

    您好 我正在尝试使用 HTML onclick 函数传递多个值 我使用 Javascript 创建表 var user element UserName var valuationId element ValuationId Valuati
  • 无法解析 com.facebook.react:react-native:0.32.0

    我在 android studio 的 React Native 项目中打开了 android 文件夹 做了所有可能的修改build gradle文件 但是我收到这个重复的错误 Error Failed to resolve com fac
  • jQuery Mobile 绑定事件

    我在使用 jquery mobile 时遇到了一些问题 我的页面总是被调用这个函数运行 document bind pagechange function peforms ajax operations 问题是 每次查看我的页面时 都会增加
  • Git 命令仅重置索引和工作树而不是 HEAD

    这个问题是后续问题这个问题 https stackoverflow com questions 44513186 how do i edit a commit with interactive rebase as uncommited 它试
  • C 中 If-Else 和三元运算符之间的速度差异...?

    因此 在同事的建议下 我刚刚测试了三元运算符和等效的 If Else 块之间的速度差异 并且三元运算符生成的代码似乎比 If Else 快 1 到 2 倍 我的代码是 gettimeofday tv3 0 for i 0 i lt N i
  • 在 R 中建立复杂方程模型

    我有以下模型 我在 R 中将其编码为 function t C Ao s wd ph C Ao exp s t cos wd t ph 我想用这个方程来形成一个预测模型 但是 我不知道如何成功运行或绘制这个方程 I tried nls但遇到
  • phpmyadmin 中的 $GLOBALS['cfg'] 在哪里

    我在phpmyadmin下的phpinfo php文件中发现 有这样的配置设置 if GLOBALS cfg ShowPhpInfo phpinfo 我想知道在哪里可以设置 GLOBALS cfg ShowPhpInfo 配置 当然 我可以
  • angularjs 编译 ng-controller 和插值

    On the docs https docs angularjs org api ng function angular injector我看到了一个后来添加的编译 东西 的例子 var div div content label div
  • Angularjs 会话存储和范围

    有人知道为什么我的范围变量没有更新吗 这让我难以置信 sessionStorage 变量很好 但是当我在范围变量中定义它们时 我收到 未定义 错误 我已经修改了 scope apply 但显然范围已经被消化了 S请帮助新手 if sessi