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 相关文章推荐
解放web程序员的输入验证
Oct 06 Javascript
JavaScript打印iframe内容示例代码
Aug 20 Javascript
JSON传递bool类型数据的处理方式介绍
Sep 18 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
AngularJS入门教程之AngularJS指令
Apr 18 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
tangram.js库实现js类的方式实例分析
Jan 06 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
Jul 04 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 Javascript
详解Vue3中对VDOM的改进
Apr 23 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
javascript闭包入门示例
2014/04/30 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
jsTree使用记录实例
2016/12/01 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
浅谈Python type的使用
2019/11/19 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
python基于opencv 实现图像时钟
2021/01/04 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
大学校运会广播稿
2014/02/03 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
会计员岗位职责
2014/03/15 职场文书
民间个人借款协议书
2014/09/30 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
放假通知
2015/04/14 职场文书