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

乍一看这个标题,可能会有疑问: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的更多相关文章

  1. 通信vue2.0组件

    vue2.0组件通信各种情况总结与实例分析   Props在vue组件中各种角色总结 在Vue中组件是实现模块化开发的主要内容,而组件的通信更是vue数据驱动的灵魂,现就四种主要情况总结如下: 使用p ...

  2. vue2.0组件传值

    props down   emit up 嘿嘿    如果是第一次接触vue2.0组件传值的肯定很疑惑,这是什么意思(大神总结的,我也就是拿来用用) “down”—>指的是下的意思,即父组件向子 ...

  3. vue2.0组件库

    UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...

  4. Vue2.0组件间数据传递

    Vue1.0组件间传递 使用$on()监听事件: 使用$emit()在它上面触发事件: 使用$dispatch()派发事件,事件沿着父链冒泡: 使用$broadcast()广播事件,事件向下传导给所有 ...

  5. Vue2.0+组件库总结

    转自:https://blog.csdn.net/lishanleilixin/article/details/84025459 UI组件 element - 饿了么出品的Vue2的web UI工具套 ...

  6. 转:Vue2.0+组件库总结

    UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...

  7. Vue2.0组件之间通信(转载)

    Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...

  8. Vue2.0组件实现动态搜索引擎(一)

    原文链接:https://blog.csdn.net/qwezxc24680/article/details/74550556 从github上看到一个不错的开源项目:https://github.c ...

  9. Vue2.0组件的继承与扩展

    如果有需要源代码,请猛戳源代码 希望文章给大家些许帮助和启发,麻烦大家在GitHub上面点个赞!!!十分感谢 前言 本文将介绍vue2.0中的组件的继承与扩展,主要分享slot.mixins/exte ...

  10. Vue2.0组件之间通信

    Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...

随机推荐

  1. 170616、解决 java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList

    报错截图: 原因:搭建项目的时候,springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖. 解决步骤: 1.添加jackson依赖到pom.xml <!-- j ...

  2. Spring Security使用心得

    某天,你的客户提出这样一个需求,在点击购买商品的时,如果用户没有注册,并且用户没有账号,这时用户去创建账户,然后要直接返回到想购买商品的付款页面.你会该如何基于Spring Security实现? S ...

  3. MySQL :: MySQL 8.0 Reference Manual :: B.6.4.3 Problems with NULL Values https://dev.mysql.com/doc/refman/8.0/en/problems-with-null.html

    MySQL :: MySQL 8.0 Reference Manual :: B.6.4.3 Problems with NULL Values https://dev.mysql.com/doc/r ...

  4. [.Net]System.OutOfMemoryException异常

    1. 一个异常情景 加载15000条等高线,平均每条线有400个点到三维球上,等待时间太长.而且可能会报内存异常. 2. 不错的分析 http://wenku.baidu.com/view/14471 ...

  5. python之__setattr__常见问题

    #__setattr__ class Foo(object): def set(self,k,v): pass def __setattr__(self, key, value): print(key ...

  6. MySQL server has gone away 问题的解决方法(转)

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ...

  7. 系统管理命令之w

    区别于who命令,w命令不仅可以看到登录服务器的用户信息,而且可以看到这些用户做了什么 1.查看该命令的帮助信息. # w  --help 2.查看该命令的版本信息. # w  --version 3 ...

  8. 一次org.springframework.jdbc.BadSqlGrammarException ### Error querying database Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException问题排查过程

    先说结论: 因为在表设计中有一个商品描述字段被设置为desc,但desc是mysql中的关键字,如select id,name,desc,price from product;这条sql语句在查询时的 ...

  9. 154. Find Minimum in Rotated Sorted Array II(剑指offer)

    Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed? Would ...

  10. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2)

    A. The King's Race 签. #include <bits/stdc++.h> using namespace std; #define ll long long ll n, ...