用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网页请求urllib2模块简单封装代码
Feb 07 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
python 函数内部修改外部变量的方法
Dec 18 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
python数据类型可变不可变知识点总结
Mar 06 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
python 实现性别识别
Nov 21 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
详解python字符串驻留技术
May 21 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接收POST数据,解析json数据
2013/06/28 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
用原生JS实现简单的多选框功能
2017/06/12 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
vue实现文字加密功能
2019/09/27 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python面向对象之Web静态服务器
2019/09/03 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
护理中职生求职信范文
2014/02/24 职场文书
安全生产标语
2014/06/06 职场文书
医学生求职自荐书
2014/06/12 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
vue实现Toast组件轻提示
2022/04/10 Vue.js
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android