自定义事件
[[toc]]
dispatchEvent
已废弃
initEvent
createEvent()
createEvent()方法返回新创建的Event对象,支持一个参数,表示事件类型,具体见下表:
| 参数 | 
事件接口 | 
初始化方法 | 
| HTMLEvents | 
HTMLEvent | 
initEvent() | 
| MouseEvents | 
MouseEvent | 
initMouseEvent() | 
| UIEvents | 
UIEvent | 
initUIEvent() | 
initEvent()
initEvent()方法用于初始化通过DocumentEvent接口创建的Event的值。
支持三个参数:initEvent(eventName, canBubble, preventDefault)
 分别表示:
dispatchEvent()
dispatchEvent()就是触发执行了,dom.dispatchEvent(eventObject)
 参数eventObject表示事件对象,是createEvent()方法返回的创建的Event对象。
  window.evt = document.createEvent("HTMLEvents");
  window.evt.initEvent("handleData", false, false);
  document.addEventListener('handleData', this.handelData, false);
  document.dispatchEvent(ev);
 
  | 
 
Event (单向)
Event
语法
event = new Event(typeArg, eventInit);
  1. typeArg 事件名称 2. eventInit   "bubbles",可选 默认值为 `false`,表示该事件是否冒泡。   "cancelable",可选 默认值为 `false`, 表示该事件能否被取消。   "composed",可选 默认值为 `false`,指示事件是否会在影子DOM根节点之外触发侦听器。
 
  const ev = new Event("look", {"bubbles":true, "cancelable":false});
 
  document.addEventListener('look', function (e) { ... }, false);     
  document.dispatchEvent(ev);
  myDiv.dispatchEvent(ev);
   | 
 
CustomEvent(多向)
CustomEvent
CustomEvent 可以创建一个更高度自定义事件,还可以附带一些数据,具体用法如下:
var myEvent = new CustomEvent(eventname, options); 其中 options 可以是: {   detail: {     ...   },    bubbles: true,       cancelable: false  }
   | 
 
 export default {    mounted() {       function createEvent(params, eventName = 'look') {                  return new CustomEvent(eventName, {detail: params});       }              window.cEvt = createEvent({handelData: this.handelData});     },     methods: {       handelData(...opt) {         this.ary.push(...opt)                  this.ary = _.uniqWith(this.ary, _.isEqual);         return this.ary       }     } }
  export default {    methods: {      queryData({detail: {handelData}}) {                const data =  handelData({ary: [1, 2, 3, 4], msg: '子传父'});      },      dispatchData() {                document.addEventListener('look', this.queryData);                document.dispatchEvent(window.cEvt);      },    },    mounted() {              this.$once('hook:beforeDestroy', () => {         document.removeEventListener('look', this.queryData);       })    }, }
 
  |