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


Posted in Javascript onMarch 06, 2018

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

Javascript 相关文章推荐
漂亮的提示信息(带箭头)
Mar 21 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
May 15 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
手机Web APP如何实现分享多平台功能
Aug 19 Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 Javascript
vue 组件使用中的一些细节点
Apr 25 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
微信小程序 checkbox使用实例解析
Sep 09 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 #Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 #Javascript
node的process以及child_process模块学习笔记
Mar 06 #Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 #Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 #jQuery
Vue2.0 http请求以及loading展示实例
Mar 06 #Javascript
浅析Vue中method与computed的区别
Mar 06 #Javascript
You might like
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
庆八一活动方案
2014/01/25 职场文书
高中军训第一天感言
2014/03/06 职场文书
诚信承诺书范文
2014/03/27 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
同意落户证明
2015/06/19 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
redis缓存存储Session原理机制
2021/11/20 Redis
python在package下继续嵌套一个package
2022/04/14 Python