Vue 비 모/자 어셈블리 전송 매개변수

1217 단어
도구 클래스 이벤트.js
var events = {}

function on(name, self, callback) {
  var tuple = [self, callback]
  var callbacks = events[name]
  if (Array.isArray(callbacks)) {
    callbacks.push(tuple)
  } else {
    events[name] = [tuple]
  }
}

function remove(name, self) {
  var callbacks = events[name]
  if (Array.isArray(callbacks)) {
    events[name] = callbacks.filter((tuple) => {
      return tuple[0] !== self
    })
  }
}

function emit(name, data) {
  var callbacks = events[name]
  if (Array.isArray(callbacks)) {
    callbacks.map((tuple) => {
      var self = tuple[0]
      var callback = tuple[1]
      callback.call(self, data)
    })
  }
}

exports.on = on
exports.remove = remove
exports.emit = emit


사용법
예를 들어 구성 요소 A가changeTab 이벤트를 등록하고 구성 요소 B에서tab을 선택하고 구성 요소 A를 주동적으로 알립니다
구성 요소 A 등록 이벤트
mounted () {
  let that = this
  event.on('selectedTagCallback', this, function(data) {
    // selectedTagCallback:     
    // data :        
  })
}

구성 요소 B 트리거 이벤트
event.emit('selectedTagCallback', data)

구성 요소 A 제거 이벤트
event.remove('selectedTagCallback', this)

좋은 웹페이지 즐겨찾기