vue 中的events

咱們都知道dom操做會觸發時間,vue組件本身也有一套事件vue

在initMixin中,在合併options時能夠看到node

opts._parentListeners = vnodeComponentOptions.listeners

這個代碼,咱們能夠知道options的listeners會含有繼承組件的監聽器,
咱們initEvents(vm)會初始化事件和監聽器數組

摘錄一些代碼dom

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屬性裏邊添加事件名稱的數組,數組裏邊包含監聽事件列表code

相關文章
相關標籤/搜索