美文网首页
Vue非父子组件传递参数

Vue非父子组件传递参数

作者: 毛宇鹏 | 来源:发表于2018-05-03 16:24 被阅读60次

工具类 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)

相关文章

  • Vue组件之间的数据传递

    1、父子组件传递父组件传给子组件通过props方法接收参数子组件传给父组件:$emit方法传递参数2、非父子组件创...

  • Vue非父子组件传递参数

    工具类 event.js 使用方法 例如: 组件A注册 changeTab 事件, 组件B中, 选择了tab...

  • vue组件如何通信?有几种方式?

    在vue中组件通讯可以分为父子组件通讯和非父子组件通信。父组件通过props的方式向子组件传递数据,而子组件可以通...

  • vue组件传值

    vue中的参数传递方式有1、父子组件中通过props,$emit互相传递2、event bus事件总线3、vuex...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • #搭建Vue+TypeScript项目(五)

    vue组件 组件中使用typescript 主文件 父子组件传递数据 子文件lefebar

  • vue学习

    vue中的事件传递 父子组件传值通过props传递,父组件 :name=“name(父数据)”子组件 props内...

  • Vue的组件通信

    Vue的父子通信问题 参考文档 : Vue 组件组合 使用 props传递数据 用v-on 绑定事件 原理: 父子...

网友评论

      本文标题:Vue非父子组件传递参数

      本文链接:https://www.haomeiwen.com/subject/lrclrftx.html