用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读取json文件并将数据插入到mongodb的方法
Mar 23 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
Python实现字符串格式化的方法小结
Feb 20 Python
python僵尸进程产生的原因
Jul 21 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python重试装饰器的简单实现方法
Jan 31 Python
python flask搭建web应用教程
Nov 19 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 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初学者最感迷茫的问题小结
2010/03/27 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
Python中有趣在__call__函数
2015/06/21 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
python使用递归的方式建立二叉树
2019/07/03 Python
详解python中eval函数的作用
2019/10/22 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
实习护理工作自我评价
2013/09/25 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
审计主管岗位职责
2014/01/31 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2014年技术员工作总结
2014/11/18 职场文书
花田少年史观后感
2015/06/16 职场文书
父母教会我观后感
2015/06/17 职场文书
法定代表人免职证明
2015/06/24 职场文书
合理化建议书范文
2015/09/14 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
vue+iview实现手机号分段输入框
2022/03/25 Vue.js