详解vue 自定义组件使用v-model 及探究其中原理


Posted in Javascript onOctober 11, 2019

1、首先我们来实现自定义组件中使用v-model

父组件中注册子组件

<template>
 <div id="app">
  <p>{{name}}</p>
  <MyInput v-model="name"/>
 </div>
</template>

<script>
import MyInput from './components/MyInput.vue'
export default {
 name: 'app',
 data(){
  return {
   name: 132
  }
 },
 components: {
  MyInput
 },
}
</script>

子组件接收父组件传值

<template>
  <div>
    <input type="text" v-bind:value="value" v-on:input="$emit('input', $event.target.value)" />
  </div>
</template>
<script>
export default {
 name: "MyInput",
 props: {
  value: ""
 },
};
</script>

2.探究v-model

在input中的v-model功能是实现数据的双向绑定,即绑定name值及改变值。

工作等同于以下代码:

<input type="text" v-bind:value="name" v-on:input="event=>name=event.target.value" />

v-bind将name的值绑定到value

v-on绑定input事件,当事件触发时将事件目标值赋值给name

而在自定义标签中的v-model与在input中的功能一致,但绑定的事件有些许不同,如下:

<MyInput type="text" v-bind:value="value" v-on:input="value=>name=value" />

在子组件中使用$emit触发MyInput中的input事件,此时$emit并不能传input的event的事件,而是直接传目标值。

详解vue 自定义组件使用v-model 及探究其中原理

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

Javascript 相关文章推荐
jQuery 使用手册(六)
Sep 23 Javascript
js保留两位小数使用toFixed实现
Jul 29 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
Jan 27 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
AngularJS 中的指令实践开发指南(一)
Mar 20 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
JsonProperty 的使用方法详解
Oct 11 #Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 #Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 #Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 #Javascript
vue控制多行文字展开收起的实现示例
Oct 11 #Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 #Javascript
js脚本中执行java后台代码方法解析
Oct 11 #Javascript
You might like
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
jQuery实现购物车的总价计算和总价传值功能
2018/11/28 jQuery
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python实现list由于numpy array的转换
2018/04/04 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
应聘自荐书
2013/10/08 职场文书
大学生职业规划前言模板
2013/12/27 职场文书
工程部文员岗位职责
2015/02/04 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android
hive数据仓库新增字段方法
2022/06/25 数据库