解决Vue2.x父组件与子组件之间的双向绑定问题
程序员文章站
2022-07-09 18:05:12
最近在研究如何写一套基于vue2.x的ui组件给自己用,提升一点big,在制作含有input的组件遇到一个问题:不知怎样才能把子组件中input与调用者(父组件)的数据实现...
最近在研究如何写一套基于vue2.x的ui组件给自己用,提升一点big,在制作含有input的组件遇到一个问题:不知怎样才能把子组件中input与调用者(父组件)的数据实现双向绑定,想过使用vuex,但观摩了一下其他优秀的ui框架,发现使用vuex会给其他使用者造成麻烦,于是决心找到寻求解决方法,在参考了几篇大牛们文章后,终于找到。
在这将解决方案贴出,希望能帮助到和我一样初次接触vue这个框架的同行们。
子组件的代码逻辑
<template> <div class="ne-ipt"> <input type="text" v-model="currentvalue"> </div> </template> <style lang="less" scoped> @import "../../assets/styles/form/form.less"; </style> <script> export default { name: 'neipt', props: { // 接收一个由父级组件传递过来的值 value: { type: string, default: function () { return '' } } }, computed:{ currentvalue: { // 动态计算currentvalue的值 get:function() { return this.value; // 将props中的value赋值给currentvalue }, set:function(val) { this.$emit('input', val); // 通过$emit触发父组件 } } } } </script>
父组件代码逻辑
<template> <div id="button-index"> <ne-ipt placeholder="姓名" v-model="test"></ne-ipt> </div> </template> <style> </style> <script> import neipt from './neipt' export default { name: 'form-index', data () { return { test: '' } }, components: { neipt } } </script>
在修改子组件的currentvalue的时候其实通过$emit触发input事件将值传递给调用者的v-model,从而实现双向绑定。
总结
以上所述是小编给大家介绍的解决vue2.x父组件与子组件之间的双向绑定问题法,希望对大家有所帮助
上一篇: 世界上最好的语言搭建短链接及统计功能(附API代码)
下一篇: (七)SpringMVC拦截器