vue父子組件互相傳值

2019-7-23    seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里

一、父組件給子組件傳值

1、父組件調(diào)用子組件的時(shí)候,綁定動(dòng)態(tài)屬性

/*傳值可以是值“title”、是方法“run”、是組件“this”*/
<v-header :title="title" :run="run" :home="this"></v-header>
1
2
2、在子組件里面通過props接受父組件傳過來的數(shù)據(jù)

<script>
    export default{
props:['title','run','home']
}
</script>

二、父組件主動(dòng)獲取子組件的數(shù)據(jù)和方法

1、調(diào)用子組件的時(shí)候定義一個(gè)ref

<v-header ref="header"></v-header>
1
2、在父組件里面通過以下方式獲取屬性和方法

this.$refs.header.屬性
this.$refs.header.方法

三、子組件主動(dòng)獲取父組件的數(shù)據(jù)和方法

this.$parent.數(shù)據(jù)
this.$parent.方法

四、非父子組建傳值

1、新建一個(gè)js文件 然后引入vue 實(shí)例化vue最后暴露這個(gè)實(shí)例

VueEvent.js

import Vue from 'vue';
var VueEvent = new Vue();
export default VueEvent;

2、在要廣播的地方引入剛才定義的實(shí)例,并進(jìn)行廣播

home.vue

<script>
import VueEvent from './VueEvent.js';
    export default{
        methods:{
            emitNews(){
                /*廣播數(shù)據(jù)*/
                VueEvent.$emit('to-news',this.數(shù)據(jù))
            }
        }
}
</script>

3、在要接收數(shù)據(jù)的地方接受廣播

news.vue

<script>
import VueEvent from './VueEvent.js';
    export default{
        /*在生命周期函數(shù)里寫,編譯的時(shí)候就調(diào)用*/
        mounted(){
            /*接受廣播*/
            VueEvent.$on('to-news',function(data){
                console.log(data);
            })
        }
}
</script>


分享本文至:

日歷

鏈接

個(gè)人資料

存檔