vue 自定義元件 v-model雙向繫結、 父子元件同步通訊
轉載自: https://www.cnblogs.com/gsgs/p/7294160.html
前言: 父子元件通訊,都是單項的,很多時候需要雙向通訊。方法如下:
1、父元件使用:msg.sync="aa" 子元件使用$emit('update:msg', 'msg改變後的值xxx')
2、父元件傳值直接傳物件,子元件收到物件後可隨意改變物件的屬性,但不能改變物件本身。
3、父元件使用: v-model
第一種曾經被廢除過,由於維護成本的原因被刪掉,但經過證實,確實有存在的意義,又被加上。
第一種、sync方式
// 父元件:
<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) //這兒是關鍵 update:snycTest 自定義事件會告訴父元件將父元件的 test值改為this.snycTest+1,並傳回給子元件。
} } } </script>
第二種、v-model方式
// 父元件:
<template>
<div>
<aa class="abc" v-model="test" ></aa> // 元件中使用v-model
{{'外面的值:' + test}} // 這兒試驗test與內部msg值為雙向繫結關係
<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個屬性,prop屬性說,我要將msg作為該元件被使用時(此處為aa元件被父元件呼叫)v-model能取到的值,event說,我emit ‘cc’ 的時候,引數的值就是父元件v-model收到的值。
prop: 'msg',
event: 'cc'
},
props: {
msg: ''
},
methods: {
fn2 () {
this.$emit('cc', this.msg+2)
}
}
}
</script>
// 子元件寫法二:
<template>
<div>
<ul>
<li>{{'裡面的值:'+ value}}</li> // 元件使用時有v-model屬性,value初始傳的‘what’ 不會被渲染,而是v-model繫結的test值被渲染,這兒value會被重新賦值為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 傳送資料,傳送的資料會被父級v-model=“test”接受到,再被value=test傳回來。
}
}
}
相關文章
- 前端 | 自定義元件 v-model:Vue 如何實現雙向繫結前端元件Vue
- Vue父子元件如何雙向繫結傳值Vue元件
- 7.vue元件(二)--雙向繫結,父子元件訪問Vue元件
- vue父子關係元件間的雙向資料繫結Vue元件
- Vue父子元件雙向繫結傳值的實現方法Vue元件
- 總結Vue第二天:自定義子元件、父子元件通訊、插槽Vue元件
- vue實踐:元件雙向繫結Vue元件
- vue 父子元件通訊Vue元件
- Vue父子元件通訊小總結Vue元件
- vue v-model 雙向繫結Vue
- vue 雙向繫結(v-model 雙向繫結、.sync 雙向繫結、.sync 傳物件)Vue物件
- Vue中父子元件通訊——元件todolistVue元件
- vue.js父子元件雙向傳輸資料(v-model在元件中的使用)Vue.js元件
- vue元件繫結v-model指令Vue元件
- Vue 自定義元件使用 v-modelVue元件
- Vue 父子元件的通訊Vue元件
- vue--select父子元件通訊Vue元件
- Vue自定義元件之v-model的使用Vue元件
- 080 元件自定義事件-繫結元件事件
- vue父子元件通訊高階用法Vue元件
- Vue2.0父子元件間通訊Vue元件
- vue框架之自定義元件中使用v-modelVue框架元件
- vue.js自定義元件上使用v-modelVue.js元件
- 會vue,學習react元件父子通訊VueReact元件
- vue父子元件狀態同步的最佳方式續章(v-model篇)Vue元件
- VUE的雙向繫結及區域性元件的使用Vue元件
- 元件間通訊--自定義事件元件事件
- 手動實現vue元件間的雙向資料繫結Vue元件
- 兩種語法糖,搞定Vue元件Prop的雙向繫結Vue元件
- vue2.0父子、兄弟元件通訊,$emit使用Vue元件MIT
- Vue.js子元件向父元件通訊Vue.js元件
- Vue.js 父子元件通訊的1212種方式Vue.js元件
- 3.Vue非父子元件之間的通訊Vue元件
- Vue 自定義元件directive使用總結Vue元件
- vue3.0 v-model自定義元件實現,回顧vue2.x v-modelVue元件
- vue3中ref繫結自定義元件沒有獲取到domVue元件
- 【WPF】WPF開發使用者控制元件、使用者控制元件屬性依賴DependencyProperty實現雙向繫結、以及自定義實現Command雙向繫結功能演示控制元件
- Vue雙向繫結初探Vue