用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利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python连接phoenix的方法示例
Sep 29 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
Python学习笔记之For循环用法详解
Aug 14 Python
使用python实现对元素的长截图功能
Nov 14 Python
如何使用Python抓取网页tag操作
Feb 14 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
Apr 07 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
python logging模块的使用
Sep 07 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
mysql5写入和读出乱码解决
2006/11/25 PHP
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
python删除特定文件的方法
2015/07/30 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python清理子进程机制剖析
2017/11/23 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
元宵晚会主持词
2014/03/25 职场文书
合作经营协议书
2014/04/17 职场文书
法学求职信
2014/06/22 职场文书
金融与证券专业求职信
2014/06/22 职场文书
国庆宣传标语
2014/06/30 职场文书
公司活动总结范文
2014/07/01 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
教师求职自荐信
2015/03/26 职场文书
小平您好观后感
2015/06/09 职场文书
体育部部长竞选稿
2015/11/21 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android