详解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 相关文章推荐
window.dialogArguments 使用说明
Apr 11 Javascript
JQUERY1.6 使用方法四 检测浏览器
Nov 23 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
Mar 31 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
AngularJS基础 ng-include 指令简单示例
Aug 01 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
详解webpack-dev-server的简单使用
Apr 02 Javascript
vue ssr 指南详读
Jun 29 Javascript
vue npm install 安装某个指定的版本操作
Aug 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
关于尾递归的使用详解
2013/05/02 PHP
php实现的SESSION类
2014/12/02 PHP
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
Python读写Redis数据库操作示例
2014/03/18 Python
django实现分页的方法
2015/05/26 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
市场营销管理毕业生自荐信
2014/03/03 职场文书
社区食品安全实施方案
2014/03/28 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
超市创意活动方案
2014/08/15 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
云台山导游词
2015/02/03 职场文书
行政文员岗位职责
2015/02/04 职场文书
酒店前台辞职书
2015/02/26 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
instantclient客户端 连接oracle数据库
2022/04/26 Oracle