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 相关文章推荐
Highslide.js是一款基于js实现的网页中图片展示插件
Mar 30 Javascript
js removeChild 障眼法 可能出现的错误
Oct 06 Javascript
javascript showModalDialog,open取得父窗口的方法
Mar 10 Javascript
jquery 学习笔记一
Apr 07 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
Aug 27 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
微信小程序实现展示评分结果功能
Feb 15 Javascript
javascript运行机制之执行顺序理解
Aug 03 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP递归算法的简单实例
2019/02/28 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
用Python生成器实现微线程编程的教程
2015/04/13 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
python标记语句块使用方法总结
2019/08/05 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
中餐厅主管的职责范文
2014/02/04 职场文书
学生会竞聘书范文
2014/03/31 职场文书
森林防火宣传标语
2014/06/27 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
家属答谢词
2015/01/05 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
干部外出学习心得体会
2016/01/18 职场文书
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis