详解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 相关文章推荐
Javascript this指针
Jul 30 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
Apr 15 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
js模拟select下拉菜单控件的代码
May 08 Javascript
JavaScript设计模式经典之命令模式
Feb 24 Javascript
详解AngularJs ui-router 路由的简单介绍
Apr 26 Javascript
实现一个完整的Node.js RESTful API的示例
Sep 29 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
Jan 09 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
Sep 15 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
Aug 16 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
JavaScript日期库date-fn.js使用方法解析
Sep 09 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.MVC的模板标签系统(二)
2006/09/05 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
php 数组元素快速去重
2017/05/05 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Node.js的特点和应用场景介绍
2014/11/04 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
Python导入oracle数据的方法
2015/07/10 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
英文自荐信
2013/12/15 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
毕业证丢失证明
2014/01/15 职场文书
个人授权委托书范文
2014/09/21 职场文书
个人借款协议书范本
2014/11/17 职场文书
2014年学校工作总结
2014/11/20 职场文书
2015年入党决心书
2015/02/05 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
退货证明模板
2015/06/23 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书