vue在自定义组件中使用v-model进行数据绑定的方法


Posted in Javascript onMarch 25, 2019

本文介绍了vue v-model进行数据绑定,分享给大家,具体如下

官方例子https://vuefe.cn/v2/api/#model

有这么一句话: 默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event。

示例:

先来一个组件,不用vue-model,正常父子通信

<!-- parent -->

<template>

<p class="parent">

 <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>

 <Child @returnBack="turnBack" :give="sthGiveChild"></Child>

</p>

</template>

<script>

import Child from './Child.vue';

export default {

 data() {

  return {

   sthGiveChild: '给你100块'

  };

 },

 components: {

  Child

 },

 methods: {

  turnBack(val) {

   this.sthGiveChild = val;

  }

 }

}

</script>
<!-- child -->

<template>

<p class="child">

 <p>我是儿子,父亲对我说: {{give}}</p>

 <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow"   @click="returnBackFn">回应</a>

</p>

</template>

<script>

export default {

 props: {

  give: String

 },

 methods: {

  returnBackFn() {

   this.$emit('returnBack', '还你200块');

  }

 }

}
</script>

点击回应后,父亲对儿子说的话变成了儿子的回应。儿子收到的信息也变了,实现通信。

改用v-model

<!-- parent -->

<template>

<p class="parent">

 <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>

 <Child v-model="sthGiveChild"></Child>

</p>

</template>

<script>

import Child from './Child.vue';

export default {

 data() {

  return {

   sthGiveChild: '给你100块'

  };

 },

 components: {

  Child

 }

}
</script>
<!-- child -->

<template>

<p class="child">

 <p>我是儿子,父亲对我说: {{give}}</p>

 <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow"   @click="returnBackFn">回应</a>

</p>

</template>

<script>

export default {

 props: {

  give: String

 },

 model: {

  prop: 'give',

  event: 'returnBack'

 },

 methods: {

  returnBackFn() {

   this.$emit('returnBack', '还你200块');

  }

 }

}
</script>

文案虽有不同,但是效果最终是一致的。

看看官方自定义组件的v-model

官方例子https://vuefe.cn/v2/api/#model

有这么一句话: 默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event。

尝试把上边子组件的例子改一下,也是跑的通的

<!-- child -->

<template>

<p class="child">

 <p>我是儿子,父亲对我说: {{value}}</p>

 <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow"   @click="returnBackFn">回应</a>

</p>

</template>

<script>

export default {

 props: {

  value: String

 },

 methods: {

  returnBackFn() {

   this.$emit('input', '还你200块');

  }

 }

}
</script>

做一下总结:

如果你懒,不想自己去处理事件,那就用默认的 'value' && 'input' 事件去处理,如果用原生事件的,甚至连model属性也可以省去。

如果你想自己的代码比较明确,区分出自定义事件,那么下面的组合才是你的菜。

prop和event看你自己心情定义,当然要知名见意【尽量避开关键字】

model: {
prop: 'someProp', // 注意,是prop,不带s。我在写这个速记的时候,多写了一个s,调试到怀疑人生
event: 'someEvent'
}
this.$emit('someProp', [returnValueToParent])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript while语句和do while语句的区别分析
Dec 08 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
简介AngularJS的HTML DOM支持情况
Jun 17 Javascript
JavaScript观察者模式(经典)
Dec 09 Javascript
jquery.validate提示错误信息位置方法
Jan 22 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
js按条件生成随机json:randomjson实现方法
Apr 07 Javascript
JS中验证整数和小数的正则表达式
Oct 08 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
Node.js之readline模块的使用详解
Mar 25 #Javascript
Javascript的this详解
Mar 23 #Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 #Javascript
vue中组件的3种使用方式详解
Mar 23 #Javascript
ES6入门教程之Array.from()方法
Mar 23 #Javascript
setTimeout与setInterval的区别浅析
Mar 23 #Javascript
如何通过setTimeout理解JS运行机制详解
Mar 23 #Javascript
You might like
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python读取中文txt文本的方法
2018/04/12 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
基于python实现把图片转换成素描
2019/11/13 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
单位人事专员介绍信
2014/01/11 职场文书
党风廉政建设责任书
2014/04/14 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python