$rootScope.currentUser 刷新时为空

2024-05-03

我能够让 firebaseSimpleLogin 正常工作并将当前用户存储在 rootScope 中。当我转到另一个页面并返回提要页面时,所有内容都会加载,但是当我刷新时 $rootScope.currentUser 为空。其他人遇到过这个问题吗?

我的 app.run 函数中有这段代码:

$rootScope.$on('$firebaseSimpleLogin:login',function(e, auth){
   $rootScope.currentUser = User.find(auth.id);
});

这是我的 FeedCtrl 正在尝试加载用户的帖子

app.controller('FeedCtrl',['$scope', '$rootScope','User','Auth','Post',function($scope,     $rootScope,User,Auth,Post){
 populateFeed();
 console.log($rootScope.currentUser);

$scope.logout = function(){
   Auth.logout();
};


$scope.savePost = function(){
  Post.create($scope.post).then(function(post){
    $scope.post.text = "";
  });
};

function populateFeed(){
   $scope.posts = {};
   angular.forEach($rootScope.currentUser.posts,function(id){
    $scope.posts[id] = Post.find(id);
   });
}

}]);

我的主应用程序模块

var app = angular.module('myapp',['ui.router','firebase']);

app.config(function($stateProvider, $urlRouterProvider){
  $stateProvider
.state('/',{
  url: '/',
  controller: 'MainCtrl',
  templateUrl: 'views/index.html'
})
.state('feed',{
  url: '/feed',
  controller: 'FeedCtrl',
  templateUrl: 'views/feed.html',
  authenticate: true
})
.state('login',{
  url: '/login',
  controller: 'LoginCtrl',
  templateUrl: 'views/login.html'
})
.state('signup',{
  url: '/signup',
  controller: 'LoginCtrl',
  templateUrl: 'views/signup.html'
})
.state('settings',{
  url: '/settings',
  controller: 'SettingsCtrl',
  templateUrl:"views/settings.html"
})
.state('profile',{
  url: '/:slug',
  controller: 'ProfileCtrl',
  templateUrl: 'views/profile.html'
})
.state('profile-about',{
  url: '/:slug/about',
  controller: 'ProfileCtrl',
  templateUrl: 'views/profile.html'
});

$urlRouterProvider.otherwise('/');
})
.constant('FIREBASE_URL','https://{FIREBASE}.firebaseio.com/')
.run(function($rootScope, $state,FIREBASE_URL, $firebaseSimpleLogin, User, Auth){
$rootScope.$on('$stateChangeStart',function(event, next){
  if(next.authenticate && !User.getCurrentUser()){
     $state.go('login');
  }
 });

 $rootScope.$on('$firebaseSimpleLogin:login',function(e, auth){
   $rootScope.currentUser = User.find(auth.id);
  });

 $rootScope.$on('$firebaseSimpleLogin:logout',function(){
  delete $rootScope.currentUser;
  $state.go('login');
 });

 $rootScope.logout = function(){
  Auth.logout();
};

});

如果您所说的“刷新”意味着您在浏览器中按F5,这将从内存中擦除您的$rootscope,并且您将在体验时得到null(基本上您的整个应用程序将“重新启动”)。

为了保留值,您需要将它们存储在 cookie 中或使用 localStorage/sessionStorage。例如,不要使用 $rootscope.currentUser,而是使用 $window.sessionStorage.currentUser。

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

$rootScope.currentUser 刷新时为空 的相关文章

随机推荐

  • sed:更改 .yml 文件中环境属性的值

    我有一个 yml 文件 用于配置应用程序的环境属性 如下所示 env1 prop1 value1 prop2 value2 propn valuen env2 prop1 value1 prop2 value2 prop3 value3 p
  • jquery中的三美元符号是什么?

    我正在尝试调试某人的代码 并遇到了这个 ajax url ajax url param context formDialog success function data this html data BindPopupFormEvents
  • 当 URL 可在浏览器中访问时,SSH Curl 不起作用

    This post is linked with another post of mine still unsolved Laravel 作曲家更新 连接被拒绝 https stackoverflow com questions 52404
  • 为什么 gettext 没有数据库存储选项?

    我正在使用 Django 在基于 Web 的应用程序上进行一些 i18n 操作 该应用程序使用 gettext 作为其 i18n 基础 翻译应该存储在数据库中似乎是一个显而易见的想法 而且并不难做到 但文件系统上的 po 文件仍在使用 为什
  • 让 React 在表单输入字段下显示单独的错误消息

    我正在提交一个返回一系列错误的表单 但我无法弄清楚如何让每个单独的错误出现在正确的输入字段下 现在 所有错误都会打印在每个输入字段下 我在用着react bootstrap 任何帮助 将不胜感激 getValidationState var
  • 在 django 中构建动态表单

    我正在尝试根据存储在数据库中的字段及其定义动态构建一个表单 在我的数据库中 我定义了 1 个带有一些标签的复选框和 1 个带有一些标签的文本字段 如何根据数据库中的数据在我的视图中动态构建表单 Thanks 以下是我在 EuroDjango
  • 如何/在哪里发布 Python 包

    如果一个人创建了一个有用的 Python 包 那么如何 在哪里发布 宣传它以供其他人使用 我已经把它放到了 github 上 但几周后谷歌也没有找到它 包装整洁完整 我制作它供我个人使用 不与其他人分享将是一种耻辱 这是 PyPI 指南 h
  • 如何在cvxpy中编写多个约束?

    我想在 cvxpy 下的优化问题中添加许多约束 在 matlab 中 我可以通过添加一行 subject to 然后使用 for 循环来生成约束 我怎样才能在 cvxpy 中做同样的工作 因为 cvxpy 中没有 服从 概念 有什么建议吗
  • 尝试在 Windows 上执行 package.json 中的脚本会引发 JScript 错误

    所以我正在尝试构建 javascriptair site 在 的里面package json有一个 npm 脚本指向 javascript 命令 package scripts 找到该存储库https github com kentcdod
  • Android 4.3 KeyStore - 尝试检索密钥时链== null

    下列的这个博客 http nelenkov blogspot de 2013 08 credential storage enhancements android 43 html 我使用此代码来创建和存储KeyPair在 Android 密
  • PhpStorm Docker PHPUnit 数据库

    I setup https blog jetbrains com phpstorm 2016 11 docker remote interpreters PhpStorm PHP PHPUnit 与 Docker 我在 PhpStorm 数
  • TarsosDSP 音高分析傻瓜式教程

    我正在开发一个分析声音文件音调的程序 我遇到了一个非常好的 API 称为 TarsosDSP 它提供了各种音高分析 然而 我在设置它时遇到了很多麻烦 有人可以向我展示一些有关如何使用此 API 特别是 PitchProcessor 类 的快
  • WSL 中的默认权限和所有权

    我目前正在从 Ubuntu 18 04 VirtualBox 切换到 WSL 一切都已启动并运行 以拥有完整的 Web 开发环境 不幸的是 文件权限和所有权现在对我来说是一个问题 免责声明 我知道在服务器环境中这会非常糟糕并且不会被完成 这
  • 原生编程对于移动开发有何优势?

    我需要为一家公司在一些主要的移动操作系统上开发应用程序 特别是 iOS Android 和 WP7 我最初计划为三种不同的操作系统编写三个独立的应用程序 每个应用程序都使用本机 SDK 然而 这样做有什么好处吗 有许多可用的跨平台工具 Se
  • 日期/时间值的 Django URL 转换器

    我正在尝试使用 Django 内置的 URL 转换器将 URL 中的日期时间字符串转换为视图中的日期对象 如果我手动输入 URL 它们会按预期工作 但尝试为其生成 URL 时找不到匹配项 我的转换器很简单 from django utils
  • 删除最低位

    给定一个二进制数 删除最低位的最快方法是什么 01001001010 gt 01001001000 它将在代码中用于迭代变量的位 伪代码如下 while bits 0 index getIndexOfLowestOrderBit bits
  • Ember 模型中的自定义请求 url

    我正在尝试将 Ember 数据与已构建的 REST api 一起使用 它适用于顶级路由 例如我在 api 端有课程路由 如下所示 app get courses app controllers courses findAll app get
  • 如何在android中的网格视图中进行分页? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在 android 中对 gri
  • 如何在代码中停止 autopep8 未安装消息

    我是一名新的 Python 程序员 使用 Mac 版本的 VS Code 1 45 1 创建 Django 项目 我安装了 Python 和 Django 扩展 每次我保存 Django 文件时 代码都会弹出此窗口 Formatter au
  • $rootScope.currentUser 刷新时为空

    我能够让 firebaseSimpleLogin 正常工作并将当前用户存储在 rootScope 中 当我转到另一个页面并返回提要页面时 所有内容都会加载 但是当我刷新时 rootScope currentUser 为空 其他人遇到过这个问