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 表单验证方法(实用)
Apr 28 Javascript
ajax 缓存 问题 requestheader
Aug 01 Javascript
关于JavaScript命名空间的一些心得
Jun 07 Javascript
微信开发 微信授权详解
Oct 21 Javascript
浅谈vue项目可以从哪些方面进行优化
May 05 Javascript
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
Oct 18 Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
Nov 06 Javascript
微信小程序webSocket的使用方法
Feb 20 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
php 修改密码实现代码
2017/05/24 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
Python列表计数及插入实例
2014/12/17 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python实现连连看游戏
2020/02/14 Python
Python序列化pickle模块使用详解
2020/03/05 Python
基于python实现对文件进行切分行
2020/04/26 Python
详细分析Python垃圾回收机制
2020/07/01 Python
python GUI计算器的实现
2020/10/09 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
python实现计算器简易版
2020/12/17 Python
优秀信贷员先进事迹
2014/01/31 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2015年超市工作总结
2015/04/09 职场文书
新生开学寄语大全
2015/05/28 职场文书
遗失证明范文
2015/06/19 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
图解上海144收音机
2021/04/22 无线电
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
A22国内电台短波广播频率表
2022/05/10 无线电