vue 2.0组件与v-model详解


Posted in Javascript onMarch 27, 2017

前言

大家可能乍一看这个标题,可能会有疑问:v-model和组件也能扯到一起?在打算写这篇文章的时候,也是这么想的。咱们按简历的那一套STAR法则来梳理一下这篇文章:

情景【Situation】:

编写通用的输入组件时,子组件要绑定到父组件的某个变量上dataA,当父组件要拿到自组件的值时不能通过this.$children.xxx取值然后付给dataA,

而是父组件可以直接this.dataA就可以取到当前子组件最新值。

任务【Task】:

实现在父组件直接this.dataA就可以取到当前子组件最新值。

行动【Action】:

首先要了解v-model这个指令,许多认真阅读过完整vue文档的同学可能已经知道了关于v-model。

v-model官方给出的说发是:这其实是一个简写的形式,v-model实际执行的是下面的绑定:

<input type="text" v-bind:value="dataA" v-on:input="dataA = $event.target.value" />

v-model是动态绑定值到value,然后监听input的inpit事件获取值后赋给dataA的一个过程。

在说一下input的value属性,在组件内部要定义一个value的props属性,以便能够动态绑定上父组件传过来的值;

组件内部还要做一件事情:

动态计算(获取和设置)currentValue的值,用到了vue的对象的get和set函数;

讲到这里,我们就可以解决上面的问题了;

首先定义一个通用输入组件:

Vue.component('my-component',{
 template:'<div><input type="text" type="text" v-model="currentValue"/></div>',
 data:function(){
 return {
  // 双向绑定值-必须
  currentValue:this.value
 }
 },
 props:['value'],// 设置value为props属性-必须
 computed:{
 currentValue: {
  // 动态计算currentValue的值
  get:function() {
  return this.value;
  },
  set:function(val) {
  this.$emit('input', val);
  }
 }
 }
})

在Html里绑定到vue实例的一个字段上;

<div id="demo_01">
 <my-component v-for="(val,key) in postData" v-model="postData[key]"></my-component>
 <button @click="showValue">打印对象值</button>
 </div>

实例里写一个方法

打印一下我们绑定的值;

var demo_01 = new Vue({
 el:'#demo_01',
 data:{
 postData:{
  name:'李雷',
  age:'80',
  describ:'这是一个传奇的人物'
 }
 },
 methods:{
 showValue:function(){
  console.log(this.postData)
 }
 }
});

是不是以后就不用繁琐冗长的this.$children.xxx取值方式了?

结果【Result】:

提供了有效的解决了关于输入类组件取值方案,并且已经部署实施。

总结

以上就是关于vue2.0 组件和v-model的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的帮助。

Javascript 相关文章推荐
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
Mar 27 Javascript
js获取提交的字符串的字节数
Feb 09 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 Javascript
javascript中FOREACH数组方法使用示例
Mar 01 Javascript
Node.js中看JavaScript的引用
Apr 22 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
Jun 19 Javascript
javascript 产生随机数的几种方法总结
Sep 26 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 #Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 #Javascript
javascript实现下雨效果
Mar 27 #Javascript
HTML的select控件美化
Mar 27 #Javascript
JS实现的点击表头排序功能示例
Mar 27 #Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 #Javascript
vue2.0实战之基础入门(1)
Mar 27 #Javascript
You might like
PHP&amp;MYSQL服务器配置说明
2006/10/09 PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
生成php程序的php代码
2008/04/07 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
js查错流程归纳
2012/05/04 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
vant实现购物车功能
2020/06/29 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
Python之re操作方法(详解)
2017/06/14 Python
python GUI实例学习
2017/11/21 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python实现矩阵打印
2019/03/02 Python
python右对齐的实例方法
2020/07/05 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
商场消防演习方案
2014/02/12 职场文书
毕业生求职信范文
2014/06/29 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
自主招生自荐信范文
2015/03/04 职场文书
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript