vue2.0 组件和v-model
本文适合初学组件编写的同学阅读。
乍一看这个标题,可能会有疑问: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的更多相关文章
- 通信vue2.0组件
vue2.0组件通信各种情况总结与实例分析 Props在vue组件中各种角色总结 在Vue中组件是实现模块化开发的主要内容,而组件的通信更是vue数据驱动的灵魂,现就四种主要情况总结如下: 使用p ...
- vue2.0组件传值
props down emit up 嘿嘿 如果是第一次接触vue2.0组件传值的肯定很疑惑,这是什么意思(大神总结的,我也就是拿来用用) “down”—>指的是下的意思,即父组件向子 ...
- vue2.0组件库
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...
- Vue2.0组件间数据传递
Vue1.0组件间传递 使用$on()监听事件: 使用$emit()在它上面触发事件: 使用$dispatch()派发事件,事件沿着父链冒泡: 使用$broadcast()广播事件,事件向下传导给所有 ...
- Vue2.0+组件库总结
转自:https://blog.csdn.net/lishanleilixin/article/details/84025459 UI组件 element - 饿了么出品的Vue2的web UI工具套 ...
- 转:Vue2.0+组件库总结
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...
- Vue2.0组件之间通信(转载)
Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...
- Vue2.0组件实现动态搜索引擎(一)
原文链接:https://blog.csdn.net/qwezxc24680/article/details/74550556 从github上看到一个不错的开源项目:https://github.c ...
- Vue2.0组件的继承与扩展
如果有需要源代码,请猛戳源代码 希望文章给大家些许帮助和启发,麻烦大家在GitHub上面点个赞!!!十分感谢 前言 本文将介绍vue2.0中的组件的继承与扩展,主要分享slot.mixins/exte ...
- Vue2.0组件之间通信
Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...
随机推荐
- Android 性能测试工具- GT
GT(随 身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug&Test Environment).利用GT,仅凭一部手机,无需连 ...
- 组织机构代码校验码生成算法(C#版)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Pandas使用to_csv保存中文数据用Excel打开是乱码
关于这个问题还是困扰了很久,我生成了一些样本数据,打算保存到csv文件,之后用pandas的命令: # data是DataFrame的格式 data.to_csv('./data/myfile.csv ...
- Ubuntu下MySQL主从同步配置
一.在两台Linux机器上安装MySQL 二.Master主服务器配置(192.168.1.3) 1.编辑my.cnf编(命令查找文件位置:find / -name my.cnf) vi /etc/m ...
- thinkphp中 volist循环的 mod取值的问题
<ul> <volist name="data" id="arr" key="k" mod="2"&g ...
- Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?
一.背景 Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器? http://blog.csdn.net/ouyang_peng/article/details/ ...
- uchome 常用函数示例
一.inserttable //添加数据 //前3个参数 $tablename插入的表名称 $insertsqlarr数据数组 $returnid是否返回插入ID function inserttab ...
- git-【五】远程仓库
一.准备工作 在了解之前,先注册github[https://github.com/]账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置: 第一步 创建SSH ...
- ArcEngine和GDAL读写栅格数据机制对比(一)
最近应用AE开发插值和栅格转等值线的程序,涉及到栅格读写的有关内容.联想到ArcGIS利用了GDAL的某些东西,从AE的OMD中也发现RasterDataset和RasterBand这些命名和GDAL ...
- Apache配置虚拟主机后让其他电脑访问
关于Apache配置虚拟主机后在局域网中让其他电脑访问 #test1# NameVirtualHost *:80 ServerName www.t1.com Document ...