vue 中的events

我们都知道dom操作会触发时间,vue组件自己也有一套事件

在initMixin中,在合并options时可以看到

  opts._parentListeners = vnodeComponentOptions.listeners

这个代码,我们可以知道options的listeners会含有继承组件的监听器,
我们initEvents(vm)会初始化事件和监听器

摘录一些代码

  if (listeners) {
    updateComponentListeners(vm, listeners)
  }

  target = vm
  updateListeners(listeners, oldListeners || {}, add, remove, createOnceHandler, vm)
  target = undefined

// updateListeners里边是这样的
    add(event.name, cur, event.capture, event.passive, event.params)

    function add (event, fn) {
      target.$on(event, fn)
    }
// $on里边是这样的 
(vm._events[event] || (vm._events[event] = [])).push(fn)

最后就是往vm的_events属性里边添加事件名称的数组,数组里边包含监听事件列表

你可能感兴趣的:(vue.js)