通过本文给大家介绍vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法,具体详情如下所示:
父子组件通信,都是单项的,很多时候需要双向通信。方法如下:
1、父组件使用:msg.sync="aa"
子组件使用$emit('update:msg', 'msg
改变后的值xxx')
2、父组件传值直接传对象,子组件收到对象后可随意改变对象的属性,但不能改变对象本身。
3、父组件使用: v-model
第一种曾经被废除过,由于维护成本的原因被删掉,但经过证实,确实有存在的意义,又被加上。
第一种:
父组件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <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>
|
子组件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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)
} } } </script>
|
v-model写法一:
父组件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <template>
<div>
<aa class= "abc" v-model= "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>
|
子组件写法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <template>
<div>
<ul>
<li>{{ '里面的值:' + msg}}</li>
<button @click= "fn2" >里面改变外面</button>
</ul>
</div>
</template>
<script>
export default {
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>
。
子组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <template>
<div>
<ul>
<li>{{ '里面的值:' + value}}</li>
<button @click= "fn2" >里面改变外面</button>
</ul>
</div>
</template>
<script>
export default {
props: {
value: {
default : ' ',
},
},
methods: {
fn2 () {
this.$emit(' input', this .value+2)
}
}
}
|
一般双向绑定用v-model写法一。
总结
以上所述是小编给大家介绍的vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!