本文适合初学组件编写的同学阅读。

乍一看这个标题,可能会有疑问: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函数;

讲到这里,我们就可以解决上面的问题了;

首先定义一个通用输入组件:

 1 Vue.component('my-component',{
 2     template:'<div><input type="text" type="text" v-model="currentValue"/></div>',
 3     data:function(){
 4         return {
 5             // 双向绑定值-必须
 6             currentValue:this.value
 7         }
 8     },
 9     props:['value'],// 设置value为props属性-必须
10     computed:{
11         currentValue: {
12             // 动态计算currentValue的值
13             get:function() {
14                 return this.value;
15             },
16             set:function(val) {
17                 this.$emit('input', val);
18             }
19         }
20     }
21 })

在Html里绑定到vue实例的一个字段上;

1 <div id="demo_01">
2     <my-component v-for="(val,key) in postData" v-model="postData[key]"></my-component>
3     <button @click="showValue">打印对象值</button>
4 </div>

实例里写一个方法

打印一下我们绑定的值;

 1 var demo_01 = new Vue({
 2     el:'#demo_01',
 3     data:{
 4         postData:{
 5             name:'李雷',
 6             age:'80',
 7             describ:'这是一个传奇的人物'
 8         }
 9     },
10     methods:{
11         showValue:function(){
12             console.log(this.postData)
13         }
14     }
15 });

是不是以后就不用繁琐冗长的this.$children.xxx取值方式了?

结果【Result】:

提供了有效的解决了关于输入类组件取值方案,并且已经部署实施。

最后感谢大家阅读,欢迎大家提出问题探讨。

转载于:https://www.cnblogs.com/wwlhome/p/6551165.html

vue2.0 组件和v-model相关推荐

  1. 关于vue2.0组件通信

    1.父组件通过props属性给子组件通信 //父组件 <template> <child :show="is_showshare" :age="age& ...

  2. vue2.0组件生命周期探讨

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>vue ...

  3. Vue2.0组件实现动态搜索引擎(二)

    接上一篇,完成logo部分我们就要开始整个项目的核心--panel组件. 整个panel组件分为3个部分:关键字输入框,相关搜索建议下拉列表和搜索跳转按钮. 由于我们整个项目是设计成父子组件的架构所以 ...

  4. vue2.0组件之间的通信

    官方建议可以直接使用一个空vue实例来处理简单的事件触发机制 var bus = new Vue(); bus.$emit('create',{title:'name'}); bus.$on('cre ...

  5. vue2.0 组件通信

    组件通信: 子组件要想拿到父组件数据 props 子组件不允许直接给父级的数据, 赋值操作如果想更改,父组件每次穿一个对象给子组件, 对象之间引用. 例子: <script> window ...

  6. Vue2.0组件注册

    组件注册分为全局注册 和 局部注册 import 名称 from '包地址'//app.component用来对组件进行全局注册 app.component('my-swiper' ,'导包时使用的名 ...

  7. Vue2.0 组件文本超出3行显示... 点击查看更多可以查看全部内容(展开收起)

    效果 <template><div ref="txttype" class="bottom"><div :class=" ...

  8. 项目vue2.0仿外卖APP(五)

    header组件 vue-resourse应用 https://github.com/pagekit/vue-resource vue-resource是Vue.js的一款插件,它可以通过XMLHtt ...

  9. vue2.0实现分页组件

    http://www.php361.com/index.php?c=index&a=view&id=4671 http://www.yanglajiao.com/article/sin ...

  10. Vue2.0基本用法之组件的注册和传值(父子props,插槽,$emit)和学写购物车

    1.Vue2.0的组件注册 组件可以是全局注册和局部注册,全局注册的组件是在其他组件里也可以使用 而局部注册的组件只能在该组件里面使用. <body><div id="ap ...

最新文章

  1. 计算机软件可以一次摊销吗,研发用无形资产可以一次摊销吗
  2. STM32串口中断的4种接收数据的实现方式
  3. LeetCode.11-装水最多的容器(Container With Most Water)
  4. vue 子级拿值_vue 父组件通过$refs获取子组件的值和方法详解
  5. 基于RobotFramework实现自动化测试
  6. UI设计灵感|有声读物APP界面设计
  7. 现代通信原理3.1:线性系统概述
  8. python怎么下载网站_python怎么下载网页上的文件
  9. 如何做到项目准时交付之需求管理
  10. 周志华:关于机器学习的一点思考
  11. 基于WDF的驱动开发
  12. html中js左右图片切换效果,JS实现图片切换特效
  13. Client can't access Jboss server, the port is not accessable.
  14. 韩松 EIE: Efficient Inference Engine on Compressed Deep Neural Network论文详解
  15. 关于启动nginx时报错:error while loading shared libraries: libpcre.so.1
  16. 狭义相对论的时空几何 --闽科夫斯基时空
  17. 【Python】自动操作Autocad的pyautocad库(一)
  18. 阿里极客公益——1000+阿里技术专家来回答你的问题或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里1000+位技术专家来云栖问答为你解答技
  19. 仿微信建群添加人员效果
  20. 低代码开发平台除了织信informat还有哪些?

热门文章

  1. centos 5开机出现PCI错误:Not using MMCONFIG
  2. CentOS6.5菜鸟之旅:中文编辑器忍痛放弃Sublime
  3. 推荐!手把手教你使用Git(转)
  4. mysql主从数据库服务器搭建
  5. HDOJ2005 ( 第几天? ) 【水题】
  6. jQuery 调用后台方法
  7. 修改堆内存_浅谈程序的内存布局
  8. 设计模式之——静态代理模式
  9. 【渝粤教育】 广东开放大学 10331k2_行政管理学_21秋考试
  10. 【渝粤题库】陕西师范大学200071 古代汉语 作业(高起本、高起专)