自定义事件工厂

74 阅读1分钟
/** * 自定义事件工厂 */export default {  map: {},  $emit(name, params) {    if (this.map[name] == null) {      console.log("没有找到关于" + name + "的事件,无法触发");    } else {      this.map[name].detail = params;      window.dispatchEvent(this.map[name]);    }  },  $on(name, work) {    // 阻止重复监听    let filterMaps = Object.keys(this.map).filter(key => {        return key == name;    });    if (filterMaps.length > 0) {      return;    }    let myEvent = new Event(name);    this.map[name] = myEvent;    window.addEventListener(name, (event) => {      work(this.map[name].detail);    });  },};