自定义事件
[[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); }) }, }
|