代码之家  ›  专栏  ›  技术社区  ›  Rhushikesh

无法在angular2应用程序中接收存储事件

  •  3
  • Rhushikesh  · 技术社区  · 7 年前

    我正在努力在我关注的应用程序的所有打开的选项卡之间进行通信

    Communication between tabs or windows

    但我没有收到事件

    import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
    
    @Component({
        selector: 'selector',
        template: require('./app.component.html'),
        styles: [require('./app.component.css')]
    })
    
    export class AppComponent {
     constructor(){
           // listen event
           window.addEventListener('storage', this.message_receive);
           // to trigger dummy events
            setInterval(() => {
                this.message_broadcast({a: 'rhushi'});
            }, 1000);
    }
        public message_broadcast(message) {
            localStorage.setItem('message', JSON.stringify(message));
        }
        public message_receive(ev) {
            if (ev.key === 'message') {
                let message = JSON.parse(ev.newValue);
            }
        } 
    }
    

    如果我在这里出错,请纠正我

    1 回复  |  直到 7 年前
        1
  •  4
  •   Shubham    7 年前

    这个 storage 事件仅在以下情况下触发 localStorage 其他选项卡中的值更改。

    在上面的代码中,您每次广播相同的json意味着 本地存储 没有改变。仅当存储中发生值更改时才会触发存储事件。尝试发送不同的值。