vue 组件通信

2021-02-07  本文已影响0人  黄黄黄大帅
父组件向子组件传值
 <children-item 
    :content="item" 
    v-for="item in list" 
    :key="item.id"
  >
  </children-item>
<script>
  export default {
    name: 'ChildrenOne',
    props: ["content"],
    data() {
      return {
        message: this.content.id
      }
    }
  }
</script>
子组件向父组件传值
  1. $emit触发事件传参
<children-item 
   :content="item" 
   :index="index" 
   v-for="(item, index) in list" 
   :key="item.id" 
   @delete="handleParentClick"
  >
</children-item>

methods:{
  handleParentClick(index){
    delete this.item[index]
  }
}
// $emit调用注册的delete事件,,并传递index参数,触发父组件的handleParentClick
 this.$emit("delete", this.index)
  1. 父组件调用子组件定义的获取数据的方法
  const refName = this.$refs.tagLogicConfig.getCurrentRefName();// tagLogicConfig为子组件
兄弟组件传值

1.main.js创建一个事件总线,也就是中转站,作为通信的桥梁,可以在main.js中创建一个公共的bus对象(bus.js),建立中转站,实现组件与组件之间的传值(onemit 必须注册挂载在同一实例中)

let bus = new Vue()
Vue.prototype.bus = bus

注册事件

this.bus.$on("ReceiveMessage", function(item) { self.name = item; })

调用事件

this.bus.$emit("ReceiveMessage", this.message)
上一篇下一篇

猜你喜欢

热点阅读