vue父子組件傳參(子組件觸發父組件方法)

子元素觸發父元素事件四步走

  • 子組件定義一個事件,或者寫在生命周期里面
  • 子組件方法內(生命周期內),觸發父元素事件 this.$emit("方法名",參數);
  • 把子組件引入父組件內,<子組件 @方法名=“父組件內方法”></子組件>
    注意,父組件內‘@方法名’要與
    子組件內this.$emit("方法名",參數),兩個方法名保持一致
  • 父組件內方法自己的邏輯

子組件 child.vue

<template>
    <div>
        <button @click="clickMe">
              點擊我觸發事件
       </button>
    </div>
</template>
<script>
     export default{
      data(){
              return{}
            }
     methods:{
           clickMe(){
            //此處的cccc要與父組件的保持一致
             this.$emit("cccc",param)
          }
         }
     }
</script>

父組件

<template>
    <div>
       //此處的cccc要與子組件的保持一致
        <vChild   @cccc="parentMethods"></vChild>
    </div>
</template>
<script>
   import vChild from './child.vue'
     export default{
      data(){
              return{}
            },
      components:{
            vChild
        },
     methods:{
            parentMethods(param){
                    console.log(param);
                   //do someThing
                }
         }
     }
</script>

除此之外還有一種比較直接的方法

  • 新建一個js文件
  • 子組件引入新建的bus
  • 用bus觸發emit和on方法
    bus.js
import Vue from 'vue'
export var bus = new Vue()

子組件

<template>
    <div @click="pass">
        表單傳值
    </div>
</template>

<script>
    import {bus} from '../../../utils/bus'
    export default {
        name: "Child",
        data() {
            return {}
        },
        components: {},
        mounted() {
        },
        methods: {
            pass(){
                alert("1112")
                bus.$emit("father",'admin');
            },
        },
    }
</script>

<style scoped>

</style>

父組件

<template>
  <div>
      <pass-child></pass-child>
      <div>
          父子傳值
      </div>
  </div>
</template>

<script>
    import PassChild from './Child'
    import {bus} from '../../../utils/bus'
    export default {
        name: "PassIndex",
        data() {
            return {}
        },
        components: {
            PassChild
        },
        mounted() {
            bus.$on('father',(param)=>{
                console.log(param)
            })
        },
        methods: {},
    }
</script>

<style scoped>

</style>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,072評論 0 29
  • 下載安裝搭建環境 可以選npm安裝,或者簡單下載一個開發版的vue.js文件 瀏覽器打開加載有vue的文檔時,控制...
    冥冥2017閱讀 6,078評論 0 42
  • vue.js是什么 是一套構建用戶界面的漸進式框架 vue應用組成 一個 Vue 應用由一個通過new Vue創建...
    多多醬_DuoDuo_閱讀 1,043評論 0 2
  • 1. 如你一般的歲月流金,正如那年散落在人間的四月,將風吹散進夢里,枕著高樓坍塌,賜予我一生幻覺。這些如針氈的字句...
    宸柒歲閱讀 359評論 0 9
  • 有時候覺得你死了才好 你不死我總不死心 總忘不掉你
    Maxines閱讀 147評論 0 0