我有一个角度应用程序,有两个页面,我在浏览器的每个选项卡中打开它们,如果我在第1页中执行某些方法,我希望第2页订阅数据更改为rxjs并更新第2页中的数据,如实时应用程序,是有什么办法可以在没有websocket的情况下做到这一点吗?我用subscribe方法尝试了它,但只有第1页听了订阅.
这是第1页称为刷新方法来更新布尔值
this.service.doRefresh();
第2页听
this.service.$refresh.subscribe(x=>{//boolean value changed by page 1(tab1)
if(x) {
console.log(x);
this.service.stopRefresh();
}
});
解决方法:
您实际上可以将事件侦听器添加到localStorage,以便您可以使用localStorage在选项卡之间“传递消息”
localStorage.setItem('yourKeyName', true)
window.addEventListener('storage', (event) => {
if (event.key == 'yourKeyName'){
//update data
}
});
因此,当您在一个页面上更改localStorage中某些内容的值时,另一个页面可以订阅它更改的事件
浏览器支持和更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage#Browser_compatibility
原文地址:https://codeday.me/bug/20190527/1162213.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。