【问题标题】:Angularjs rootscope data loss in refreshing [duplicate]刷新时Angularjs rootscope数据丢失[重复]
【发布时间】:2018-04-25 17:46:58
【问题描述】:

我遇到了 angularjs1.x 的情况 当我通过下一页/路由器后在$rootScope 中保存一个值时

Refresh f5/reload (window reload) 中$rootScope 值丢失

不使用本地存储

【问题讨论】:

  • 我对这个问题的答案并不完全满意,我的问题是,为什么我不能存储到 $rootScope 中。

标签: javascript angularjs


【解决方案1】:

您可以通过使用localStorage 来存储您的数据来避免这种情况。

$rootScope.data = localStorage.data; // get data from localStorage and assign it to rootScope
var data = {a : 1, b: 2}; // update your data
localStorage.data = data; // set it in localStorage
$rootScope.data = data;

注意每次更新 $rootScope.data 时,您都需要更新您的 localStroage 数据。

【讨论】:

  • 如何在不使用 localStorage 的情况下解决这个问题
  • @MUJEEB 您需要将数据存储在某个地方。你可以选择任何你想要的。 localStorage , sessionStorage ...等
  • 我对这个问题的答案并不完全满意,我的问题是,为什么我不能存储到 $rootScope 中。
【解决方案2】:

基本上刷新页面会将您的 $rootscope 从内存中清除(基本上您的整个应用程序将被“重新启动”)。

为了保持值,您必须将值存储在某个地方,您可以使用 localStorage/sessionStorage。

例如:

localStorage.setItem("yourKey", "YourValue");

你可以在页面刷新后得到它:

localStorage.getItem("yourKey")// YourValue

阅读更多关于它here

【讨论】:

  • 如何在不使用 localStorage 的情况下解决这个问题
  • @MUJEEB 您的另一个选择是 sessionStorage ,无论如何您需要使用其中一个,以防在页面刷新后存储您的值。
  • Degnavi - 我对这个问题的答案并不完全满意,我的问题是,为什么我不能存储到 $rootScope。
  • @MUJEEB 如果刷新页面,您将丢失 $rootScope 数据,可以肯定的是,$rootScope 不是数据库或刷新页面时保存数据的一些魔术工具,如果您刷新,一切都会重置,包括你的 $rootScope。如果您仅更改路线,您将获得数据,但刷新页面将重置您的所有范围。因此您必须使用其他选项,例如 sessionStorage 或 localStorage。
猜你喜欢
  • 2016-10-15
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2019-05-16
  • 2021-07-07
相关资源
最近更新 更多