一、父組件與子組件之間值傳遞步驟如下:
例如:我有一個父組件Myhome.vue 和一個子組件Header.vue
1、父組件調用子組件的時候,動態綁定屬性值
<v-myheader :title="title"></v-myheader>
2、在子組件使用 props 來接受父組件傳過來數據(props:['title']),如果是多個就定義多個屬性就可以
完整代碼如下:
1、Myhome.vue(父組件)代碼如下:
<template> <div id="homeapp"> <h1>這是一個home123</h1> <v-myheader :title="title"></v-myheader> </div> </template> <script> import MyHeader from './Header.vue'; export default { name:'myhome', data () { return { title:'父類數據' } } ,components :{ 'v-myheader':MyHeader } } </script>
2、Header.vue(子組件)代碼如下:
<template>
<div id="headerapp">
<h3>這是頭部組件(子組件)</h3>
<h2>父類數據--{{title}}</h2>
</div>
</template>
<script>
export default {
data() {
return {
msg:'mgs'
}
},methods:{
}
,props:['title']
}
</script>
2、除了傳遞屬性以外還能傳遞方法和父組件的對象,如果是傳遞父組件的對象,那么在子組件里就能通過父組件對象獲取屬性和方法、數據
代碼如下:
父類組件代碼如下:
<template> <div id="homeapp"> <h1>這是一個home123</h1> <v-myheader :title="title" :show='show' :home="this"></v-myheader> </div> </template> <script> import MyHeader from './Header.vue'; export default { name:'myhome', data () { return { title:'父類數據' } } ,methods:{ show(a) { alert('我是父組件方法'+a); } } ,components :{ 'v-myheader':MyHeader } } </script>
其中:
:show='show'->表示傳遞方法
:home="this"->表示傳遞父類實例對象
子組件代碼如下:
<template>
<div id="headerapp">
<h3>這是頭部組件(子組件)</h3>
<h2>父類數據--{{title}}</h2>
<button @click="show(123)">調用父類方法</button>
<button @click="getparentdata()">獲取父組件數據和方法</button>
</div>
</template>
<script>
export default {
data() {
return {
msg:'mgs'
}
},methods:{
getparentdata (){
alert(this.home.title);
}
}
,props:['title','show','home']
}
</script>
三、父組件主動獲取子組件的方法和屬性
1、調用子組件的時候定義一個ref
v-myheader ref="header"></v-myheader>
2、在父類通過
屬性獲取:this.$refs.header.屬性
方法獲取:this.$refs.header.方法
四、子組件主動獲取父組件方法和屬性
屬性獲取:this.$parent.屬性
方法獲取:this.$parent.方法
