用vue.js组件模拟v-model指令实例方法

 更新时间:2019年07月05日 15:01:25   作者:翱翔天地  
在本篇文章里小编给各位整理的是关于用vue.js组件模拟v-model指令实例方法和相关代码,需要的朋友们可以跟着学习下。

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检查值是否已经存在于字典列表中

    这篇文章主要介绍了使用python检查值是否已经存在于字典列表中,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 如何使用python请求传递csrftoken

    如何使用python请求传递csrftoken

    这篇文章主要介绍了如何使用python请求传递csrftoken问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Pandas中Series的属性,方法,常用操作使用案例

    Pandas中Series的属性,方法,常用操作使用案例

    这篇文章主要介绍了Pandas中Series的属性,方法,常用操作使用案例,文章通过包的引入展开主题,需要的朋友可以参考一下
    2022-07-07
  • pyspark dataframe列的合并与拆分实例

    pyspark dataframe列的合并与拆分实例

    这篇文章主要介绍了pyspark dataframe列的合并与拆分实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Python进程Multiprocessing模块原理解析

    Python进程Multiprocessing模块原理解析

    这篇文章主要介绍了Python进程Multiprocessing模块原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python神经网络编程实现手写数字识别

    python神经网络编程实现手写数字识别

    这篇文章主要为大家详细介绍了python神经网络编程实现手写数字识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 用python实现一幅春联实例代码

    用python实现一幅春联实例代码

    大家好,本篇文章主要讲的是用python实现一幅春联实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python调用pyttsx3实现离线文字转语音的方式

    Python调用pyttsx3实现离线文字转语音的方式

    pyttsx3是 Python 中的文本到语音的离线转换库,本文给大家介绍Python调用pyttsx3实现离线文字转语音的方式,感兴趣的朋友一起看看吧
    2024-03-03
  • 使paramiko库执行命令时在给定的时间强制退出功能的实现

    使paramiko库执行命令时在给定的时间强制退出功能的实现

    这篇文章主要介绍了使paramiko库执行命令时,在给定的时间强制退出,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Python中shapefile转换geojson的示例

    Python中shapefile转换geojson的示例

    今天小编就为大家分享一篇关于Python中shapefile转换geojson的示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论