vue 自定義組件 v-model雙向綁定、 父子組件同步通信的多種寫法
上篇文章給大家介紹了淺析Vue自定義組件的v-model,大家可以參考下。接下來通過本文給大家介紹vue 自定義組件 v-model雙向綁定、 父子組件同步通信的多種寫法,具體詳情如下所示:
父子組件通信,都是單項(xiàng)的,很多時(shí)候需要雙向通信。方法如下:
1、父組件使用:msg.sync="aa" 子組件使用$emit('update:msg', 'msg改變后的值xxx')
2、父組件傳值直接傳對(duì)象,子組件收到對(duì)象后可隨意改變對(duì)象的屬性,但不能改變對(duì)象本身。
3、父組件使用: v-model
第一種曾經(jīng)被廢除過,由于維護(hù)成本的原因被刪掉,但經(jīng)過證實(shí),確實(shí)有存在的意義,又被加上。
第一種:
父組件:
<template>
<div>
<aa class="abc" :snycTest.sync="test" ></aa>
{{'外面的值:' + test}}
<button @click="fn">
外面改變里面
</button>
</div>
</template>
<script>
import aa from './test.vue'
export default {
data () {
return {
test: ''
}
},
methods: {
fn () {
this.test += 1
}
},
components:{
aa
}
}
</script>
子組件:
<template>
<div>
<ul>
<li>{{'里面的值:'+ snycTest}}</li>
<button @click="fn2">里面改變外面</button>
</ul>
</div>
</template>
<script>
export default {
props: {
snycTest: ''
},
methods: {
fn2 () {
this.$emit('update:snycTest', this.snycTest+1) //這兒是關(guān)鍵 update:snycTest 自定義事件會(huì)告訴父組件將父組件的 test值改為this.snycTest+1,并傳回給子組件。
} } } </script>
v-model寫法一:
父組件:
<template>
<div>
<aa class="abc" v-model="test" ></aa> // 組件中使用v-model
{{'外面的值:' + test}} // 這兒試驗(yàn)test與內(nèi)部msg值為雙向綁定關(guān)系
<button @click="fn">
外面改變里面
</button>
</div>
</template>
<script>
import aa from './test.vue'
export default {
data () {
return {
test: ''
}
},
methods: {
fn () {
this.test += 1
}
},
components:{
aa
}
}
</script>
子組件寫法一:
<template>
<div>
<ul>
<li>{{'里面的值:'+ msg}}</li>
<button @click="fn2">里面改變外面</button>
</ul>
</div>
</template>
<script>
export default {
model: { // 使用model, 這兒2個(gè)屬性,prop屬性說,我要將msg作為該組件被使用時(shí)(此處為aa組件被父組件調(diào)用)v-model能取到的值,event說,我emit ‘cc' 的時(shí)候,參數(shù)的值就是父組件v-model收到的值。
prop: 'msg',
event: 'cc'
},
props: {
msg: ''
},
methods: {
fn2 () {
this.$emit('cc', this.msg+2)
}
}
}
</script>
v-model寫法二
父組件 <aa class="abc" v-model='test' ></aa> 。
子組件
<template>
<div>
<ul>
<li>{{'里面的值:'+ value}}</li> // 組件使用時(shí)有v-model屬性,value初始傳的‘what' 不會(huì)被渲染,而是v-model綁定的test值被渲染,這兒value會(huì)被重新賦值為v-model綁定的test的值。
<button @click="fn2">里面改變外面</button>
</ul>
</div>
</template>
<script>
export default {
props: {
value: { // 必須要使用value
default: '',
},
},
methods: {
fn2 () {
this.$emit('input', this.value+2) // 這兒必須用input 發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)會(huì)被父級(jí)v-model=“test”接受到,再被value=test傳回來。
}
}
}
一般雙向綁定用v-model寫法一。
總結(jié)
以上所述是小編給大家介紹的vue 自定義組件 v-model雙向綁定、 父子組件同步通信的多種寫法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解vue-cil和webpack中本地靜態(tài)圖片的路徑問題解決方案
這篇文章主要介紹了詳解vue-cil和webpack中本地靜態(tài)圖片的路徑問題解決方案,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
vue+canvas實(shí)現(xiàn)移動(dòng)端手寫簽名
這篇文章主要為大家詳細(xì)介紹了vue+canvas實(shí)現(xiàn)移動(dòng)端手寫簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
vue3中使用vuedraggable實(shí)現(xiàn)拖拽el-tree數(shù)據(jù)分組功能
這篇文章主要介紹了vue3中使用vuedraggable實(shí)現(xiàn)拖拽el-tree數(shù)據(jù)分組功能,可以實(shí)現(xiàn)單個(gè)拖拽、雙擊添加、按住ctrl鍵實(shí)現(xiàn)多個(gè)添加,或者按住shift鍵實(shí)現(xiàn)范圍添加,添加到框中的數(shù)據(jù),還能拖拽排序,需要的朋友可以參考下2024-02-02
如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ)
SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是一個(gè)零配置、無服務(wù)器的、自給自足的、事務(wù)性的SQL數(shù)據(jù)庫引擎,這篇文章主要給大家介紹了關(guān)于如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ)的相關(guān)資料,需要的朋友可以參考下2024-03-03
Vue+Echarts報(bào)錯(cuò)Cannot?set?properties?of?undefined?(settin
這篇文章主要介紹了Vue+Echarts報(bào)錯(cuò)Cannot?set?properties?of?undefined?(setting?‘plate‘)的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue2?中自定義圖片懶加載指令?v-lazy實(shí)例詳解
這篇文章主要為大家介紹了Vue2?中自定義圖片懶加載指令?v-lazy實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
vue.js的簡單自動(dòng)求和計(jì)算實(shí)例
今天小編就為大家分享一篇vue.js的簡單自動(dòng)求和計(jì)算實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue項(xiàng)目打包部署的實(shí)戰(zhàn)過程記錄
我們使用nginx部署Vue項(xiàng)目,實(shí)質(zhì)上就是將Vue項(xiàng)目打包后的內(nèi)容同步到nginx指向的文件夾,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包部署的相關(guān)資料,需要的朋友可以參考下2021-09-09
vue如何動(dòng)態(tài)修改$router參數(shù)
這篇文章主要介紹了vue如何動(dòng)態(tài)修改$router參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

