【问题标题】:How to re-populate rootScope after page refresh [duplicate]页面刷新后如何重新填充rootScope [重复]
【发布时间】:2017-07-01 11:48:24
【问题描述】:

重新加载我的 AngularJS Web 应用程序会清除我的 $rootScope。 如何以最简单的方式存储我的 $rootScope,使其在页面刷新后仍然存在?

感谢您的帮助!

【问题讨论】:

标签: angularjs refresh rootscope


【解决方案1】:

首先,让我们了解 $rootScope 是什么/做什么。

The official angular documentation 告诉我们作用域,使用观察者,在模型和视图之间提供了清晰的分离。 $rootScopeProvider 是整个 Angular 应用程序独有的范围:将其视为可以从每个控制器、服务、工厂等访问的共享对象。

您可以通过向 $rootScope 添加新属性来使用它。由于其观察者,该属性将立即在注入 $rootScopeProvider 的所有其他组件中可用。

现在,让我们以 $rootScope 的用例为例并尝试理解它: 只要应用程序正在运行并且您以编程方式向 $rootScope 添加一个属性,它将被填充,您可以在您的应用程序中使用该属性的值:

// ... 
$rootScope.property = true;
// ...

但是,如果您尝试使用不打算存储为 $rootScope 属性的对象和信息动态填充 $rootScope,这些将在您下次刷新时被清除应用程序,因为您根本没有以编程方式重新创建与先前状态相同的行为。

人们根本不建议使用 $rootScope,但如果您确实需要使用它,请多考虑一下用例。例如,如果您想在登录时进行 http POST,接收响应并将该响应存储在全局变量中,可能会有更好的服务(提供者)满足您的需求 - 例如 $cookies 、 localStorage 或简单地持久化数据库中的数据。

【讨论】:

  • 我想将登录后的用户数据存储在我的rootScope JsonObject中。我尝试将其保存在 sessionStorage 中,但刷新页面后数据也消失了..
猜你喜欢
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 2013-07-21
  • 2019-08-05
  • 2020-12-31
  • 2019-11-09
  • 2019-05-16
相关资源
最近更新 更多