用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修改Excel数据的实例代码
Nov 01 Python
Python中%r和%s的详解及区别
Mar 16 Python
Python3实现的画图及加载图片动画效果示例
Jan 19 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python使用knn实现特征向量分类
Dec 26 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python读取ini配置的类封装代码实例
Jan 08 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
基于python实现模拟数据结构模型
Jun 12 Python
python 如何将office文件转换为PDF
Sep 22 Python
Python中tqdm的使用和例子
Sep 23 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
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
Python的lambda匿名函数的简单介绍
2013/04/25 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
python迭代器常见用法实例分析
2019/11/22 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
超市端午节活动方案
2014/01/23 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
听课评语大全
2014/04/30 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
golang import自定义包方式
2021/04/29 Golang