用vue.js组件模拟v-model指令实例方法


Posted in Python onJuly 05, 2019

1、问题描述

在使用v-model指令实现输入框数据双向绑定,输入值时对应的这个变量的值也随着变化;但是这里不允许使用v-model,需要写一个组件实现v-model指令效果

<div id="user">
  <input type="text" v-model="username">
  <label>{{username}}</label>
</div>
 
<script>
  let v = new Vue({
    el:'#user',
    data:{
     username:'zhangsan'
    }
  })
</script>

2、实现源码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Vue模拟v-model指令</title>
		<script src="../js/vue.js"></script>
	</head>
	<body>
		<div id="datas">
			<input-model :value="num" @inputchange="num=arguments[0]"></input-model>
			<br>
			<span>
				{{num}}
			</span>
		</div>
		<script>
			Vue.component('input-model',{
				template:`<input type="text" :svalue="cvalue" @input="updateInput">`,
				computed: {
					cvalue() {
						return this.svalue 
					}
				},
				props:['svalue'],
				methods: {
					updateInput: function(event){
						let values = event.target.value
						this.$emit('inputchange',values)
					}
				}
			});
			
			let v = new Vue({
				el:'#datas',
				data: {
					num:'1'
				}
			})
		</script>
	</body>
</html>

3、注意事项

(1)父组件中使用子组件,绑定的inputchange必须小写,不能使用inputChange;

(2)子组件中的cvalue和计算属性中的要保持一致;

(3)子组件中的@input和父组件中的@inputchange没有必然关系;

(4)this.$emit('inputchange',values)中的inputchange要和DOM元素中的input-model一致

(5)父组件将num值通过props属性传到子组件中;子组件通过$emit触发当前实例上的事件,将改变的值传给父组件

内容扩展:

vue.js指令v-model实现方法

V-MODEL 是VUE 的一个指令,在input 控件上使用时,可以实现双向绑定。

通过看文档,发现他不过是一个语法糖。

实际是通过下面的代码来实现的:

<%@ page language="java" contentType="text/html; charset=utf-8"
 pageEncoding="utf-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script type="text/javascript" src="vue/vue.js"></script>
</head>
<body>
 <div id="app-6">
 <input :value="person.name" @input="person.name = $event.target.value">
 <input :value="person.age" @input="person.age =$event.target.value">
 {{person}}
 </div>
 <script type="text/javascript">
 var app =new Vue({
 el: '#app-6',
 data:{
 person:{name:"ray",age:19}
 }
 })
 </script>
</body>
</html>
Python 相关文章推荐
python中使用序列的方法
Aug 03 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
Jun 14 Python
Python语言描述随机梯度下降法
Jan 04 Python
python pandas模块基础学习详解
Jul 03 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
Python一键安装全部依赖包的方法
Aug 12 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
python线程信号量semaphore使用解析
Nov 30 Python
Python 支持向量机分类器的实现
Jan 15 Python
Python爬虫开发与项目实战
Dec 16 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 #Python
Python 计算任意两向量之间的夹角方法
Jul 05 #Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 #Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 #Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 #Python
python读出当前时间精度到秒的代码
Jul 05 #Python
python读写csv文件方法详细总结
Jul 05 #Python
You might like
PHP自动生成月历代码
2006/10/09 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python and、or以及and-or语法总结
2015/04/14 Python
Python中return语句用法实例分析
2015/08/04 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python 中字典嵌套列表的方法
2018/07/03 Python
Python Pillow Image Invert
2019/01/22 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
Python字典实现伪切片功能
2020/10/28 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
简述数据库的设计过程
2015/06/22 面试题
《三个小伙伴》教学反思
2014/04/11 职场文书
银行贷款委托书范本
2014/10/11 职场文书
安全责任书
2015/01/29 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript