首页 > 编程 > JavaScript > 正文

解决Vue2.x父组件与子组件之间的双向绑定问题

2019-11-19 14:13:49
字体:
来源:转载
供稿:网友

最近在研究如何写一套基于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父组件与子组件之间的双向绑定问题法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表