【问题标题】:AngularJs app cannot listen to localStorage changes from another windowAngularJs 应用程序无法监听来自另一个窗口的 localStorage 更改
【发布时间】:2017-06-14 13:14:38
【问题描述】:

在我的 AngularJS 应用程序中,两个窗口通过 localStorage 进行通信,以便使用单个 websocket 连接。主窗口侦听来自服务器的消息,将传入数据放入 localStorage 属性。子窗口在此属性上使用角度 $watch 将传入数据放入网格中。要求使用不同的窗口和单个连接。

问题是在浏览器开发工具(F12)没有打开之前,子窗口的控制器似乎无法观察到localStorage属性。

我该如何解决这个问题?

【问题讨论】:

  • 对不起,如果这个问题很愚蠢;但是两个窗口是否来自同一来源?
  • 您如何管理您的存储空间?你在使用 ngStorage 吗?或者直接js存储
  • 可以分享$watch函数
  • @aorfevre:是的,子窗口可以从主窗口内的按钮打开并指向同一个原点。是的,我正在使用 ngStorage 库。

标签: javascript angularjs websocket local-storage


【解决方案1】:

我有一个 Angular 项目,也使用 localstorage 和 localforage.js。不过,这句话确实将您的问题缩小到了开发工具上,不是吗?:

“直到浏览器开发工具(F12)没有打开。”

确保未选中此框。

重新加载页面并重试。

或者你可以试试这个解决方案:Using localstorage checks in a different window using window.postMessage()

我们的 QA 团队报告了几个错误,原因是使用本地存储打开了两个窗口,因此数据访问必须紧密同步。因此子窗口会将数据发送给处理本地存储的父窗口。

【讨论】:

  • 谢谢,但取消选中“禁用检查”不起作用。我会更好地解释:当我打开子窗口时,网格被 localStorage 中的数据填充,但它无法获取更新。然后,如果我打开开发者工具,它就会开始获取更新。然后,如果我失去了子窗口的焦点,它就不会得到更新。如果我重新打开开发者工具,它会再次开始工作。
  • 你有没有和这里提到的一样的错误?:stackoverflow.com/a/42975984/6254070你使用的是哪个浏览器?
猜你喜欢
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
相关资源
最近更新 更多