埋坑一: vue中子組件調用兄弟組件方法

小計: 開發中遇到子組件須要調用兄弟組件中的方法,以下寫個小demo記錄下心得,若是你有好的方法,請到評論區域指教less

父組件示例代碼:this

組件功能解析: 
  經過$emit獲取子組件事件,經過$ref調用子組件中事件,實現子組件二的click事件
      調用兄弟組件一中的事件
<template>
  <div>
    <!-- 子組件1 -->
    <son1 ref="borther" :dataFromFather="dataFromFather"></son1>
    <!-- 子組件2 -->
    <son2 @triggerBrotherMethods="triggerBrotherMethods" :dataFromFather="dataFromFather"></son2>
  </div>
</template>

<script>
// 引入子組件一
import son1 from './son1'
// 引入子組件二
import son2 from './son2'

export default {
  data() {
    return {
      dataFromFather: []
    }
  },
  // 註冊子組件
  components: {
    son1,
    son2
  },
  methods: {
    // 子組件2中click事件
    triggerBrotherMethods() {
      // 父組件經過$ref調用子組件1中的事件方法
      this.$refs.borther[0].bortherMethods()
    },
  }
}
</script>

<style lang="less" scoped>
/* .... */
</style>

子組件一code

組件功能解析: 
  加載父組件數據,進行業務操做
<template>
  <!-- 子組件son2 -->
  <div @click="bortherMethods">
    <!-- 父組件傳值展現 -->
    {{dataFromFather}}
  </div>
</template>

<script>
export default {
  data() {
    return {
    }
  },
  props: ['dataFromFather'],
  methods: {
    // 兄弟組件中的按鈕事件
    bortherMethods() {
      // 子組件事件方法
      ...
    },
  }
}
</script>

<style lang="less" scoped>
/* .... */
</style>

子組件二:component

組件功能解析: 
    加載父組件數據,經過click事件emit傳給父組件
<template>
  <!-- 子組件son2 -->
  <div @click="triggerBrotherMethods">
    <!-- 父組件傳值展現 -->
    {{dataFromFather}}
  </div>
</template>

<script>
export default {
  data() {
    return {
    }
  },
  props: ['dataFromFather'],
  methods: {
    // 觸發兄弟組件中的按鈕事件
    triggerBrotherMethods() {
      this.$emit('clickBrotherBtn', true)
    },
  }
}
</script>

<style lang="less" scoped>
/* .... */
</style>
相關文章
相關標籤/搜索