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 相关文章推荐
浅析jQuery的链式调用之each函数
Dec 03 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
Nov 19 Javascript
js操纵dom生成下拉列表框的方法
Feb 24 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
JS判断字符串变量是否含有某个字串的实现方法
Jun 03 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
May 03 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
如何理解Vue简单状态管理之store模式
May 15 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
javascript新手语法小结
2008/06/15 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
javascript解析json实例详解
2014/11/05 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python 网络爬虫初级实现代码
2016/02/27 Python
python调用百度语音REST API
2018/08/30 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
施工员岗位职责
2014/03/16 职场文书
安全承诺书范文
2014/03/26 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
物流管理专业推荐信
2014/09/06 职场文书
生活小常识广播稿
2014/09/16 职场文书
防灾减灾标语
2014/10/07 职场文书
工程催款通知书
2015/04/17 职场文书
西安事变观后感
2015/06/12 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js