用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 HTMLParser模块解析html获取url实例
Apr 08 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python 实现域名解析为ip的方法
Feb 14 Python
python实现五子棋小程序
Jun 18 Python
python简单区块链模拟详解
Jul 03 Python
Flask中endpoint的理解(小结)
Dec 11 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
python 利用panda 实现列联表(交叉表)
Feb 06 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
第八节 访问方式 [8]
2006/10/09 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
php防止用户重复提交表单
2015/11/02 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP 无限级分类
2017/05/04 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
PHP 裁剪图片
2021/03/09 PHP
永不消失的title提示代码
2007/02/15 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
python操作MongoDB基础知识
2013/11/01 Python
详解Python中的条件判断语句
2015/05/14 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
信息技术专业个人自我评价
2013/12/11 职场文书
单位实习鉴定评语
2015/01/04 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
详解Go语言中Get/Post请求测试
2022/06/01 Golang