详解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 相关文章推荐
Using the TextRange Object
Oct 14 Javascript
JS 实现双色表格实现代码
Nov 24 Javascript
jquery ajax 同步异步的执行示例代码
Jun 23 Javascript
为EasyUI的Tab标签添加右键菜单的方法
Jul 14 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
Jun 19 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
es6系列教程_ Map详解以及常用api介绍
Sep 25 Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
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
3.从实例开始
2006/10/09 PHP
Php图像处理类代码分享
2012/01/19 PHP
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
学习Node.js模块机制
2016/10/17 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
基于Python测试程序是否有错误
2020/05/16 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
法制宣传标语
2014/06/23 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
停课通知书
2015/04/24 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript