Vue非父子組件傳遞參數(shù)

工具類 event.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 :   回調(diào)的參數(shù)
  })
}

組件B觸發(fā)事件

event.emit('selectedTagCallback', data)

組件A銷毀事件

event.remove('selectedTagCallback', this)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,715評論 1 11
  • 也許在好多人那里,提起小時候就會有無限美好的回憶,一幕一幕的,開心的、幸福的、甜蜜的、...而我長大這么多年從不愿...
    陳曉云smile閱讀 179評論 5 1
  • 人骨子里親近自己喜歡的人和環(huán)境,不契合的容易擦出火花,但往往只是一時的新鮮和敬意,處久了會難以忍受
    江墨笙閱讀 137評論 1 0
  • 文/愛學習的飛哥 ‖飛哥有話說,專注于探求大學生學習、讀書、生活那些事。 ‖本文系作者原創(chuàng)文章,未經(jīng)許可,不得轉(zhuǎn)載...
    愛學習的飛哥閱讀 493評論 0 5

友情鏈接更多精彩內(nèi)容