Vue非父子组件传递参数

工具类 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 :   回调的参数
  })
}

组件B触发事件

event.emit('selectedTagCallback', data)

组件A销毁事件

event.remove('selectedTagCallback', this)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,374评论 25 709
  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,908评论 1 11
  • 也许在好多人那里,提起小时候就会有无限美好的回忆,一幕一幕的,开心的、幸福的、甜蜜的、...而我长大这么多年从不愿...
    陈晓云smile阅读 1,306评论 5 1
  • 人骨子里亲近自己喜欢的人和环境,不契合的容易擦出火花,但往往只是一时的新鲜和敬意,处久了会难以忍受
    江墨笙阅读 1,144评论 1 0
  • 文/爱学习的飞哥 ‖飞哥有话说,专注于探求大学生学习、读书、生活那些事。 ‖本文系作者原创文章,未经许可,不得转载...
    爱学习的飞哥阅读 3,150评论 0 5

友情链接更多精彩内容