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子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...
随机推荐
- linix防火墙设置之顺序设置问题 -- 解决防火墙规则顺序和插入规则到指定序号的问题
转载于百度经验:https://jingyan.baidu.com/article/ae97a646ce58c2bbfd461d90.html 无论是硬件防火墙还是软件防火墙都会有一个规则序列的问题, ...
- Tomcat 400错误 问题集锦
1.前后台参数类型不一致 上图错误提示就是客户端发送的请求不能找到你的具体的页面或者地址,这是Spring MVC抛出的错误,这样我们就要进行参数的检查,一定是JSP提交的参数和Controller里 ...
- phpcms输出logo下拉实例
{pc:content action=" siteid="$siteid" order="listorder ASC"} {loop $data $k ...
- Linux下批量管理工具pssh使用记录
pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器:pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的:比起for循环的做法,我更推荐使用 ...
- Django - 路由层(URLconf)
一.django 静态文件配置 /mysite1/settings.py STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_ ...
- Grafana+Prometheus监控
添加模板一定要看说明以及依赖 监控redis https://blog.52itstyle.com/archives/2049/ http://www.cnblogs.com/sfnz/p/65669 ...
- Python开发【前端】:Ajax(二)
原生Ajax.JQuery.伪Ajax三种方式使用优先级 如果发送的是[普通数据] jQuery XMLHttpRequest iframe 如果发送的是[文件] iframe jQuery(Form ...
- 洛谷P2024 食物链 [NOI2001] 并查集
正解:并查集 解题报告: 传送门(咕了! 其实没有很难(虽然我是交了三发才过的QAQ 但是一来好久没打并查集了恢复一下智力 二来看着智推里唯一一个蓝就很不爽(,,,虽然做了这题之后又补上了个蓝题QAQ ...
- Flex 布局:实例篇
上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我只列出代码,详细的语法解释请查阅<Flex布局教程:语法篇& ...
- Mirror--镜像使用的工作线程数
/*在SQL SERVER 2005 及以后版本中, 使用'MAXworker thread' 来配置可用的线程数,默认设置为0 ,即自动控制线程数 计算最大工作线程数: 对于32 位系统:逻辑CPU ...