vue实现v-model
前言
- 为什么使用v-model? v-model作为双向绑定指令也是vue两大核心功能之一,使用非常方便,提高前端开发效率。在view层,model层相互需要数据交互,即可使用v-model。
- v-model的原理简单描述
v-model主要提供了两个功能,view层输入值影响data的属性值,data属性值发生改变会更新view层的数值变化。
其核心就是,一方面modal层通过defineProperty来劫持每个属性,一旦监听到变化通过相关的页面元素更新。另一方面通过编译模板文件,为控件的v-model绑定input事件,从而页面输入能实时更新相关data属性值。
- v-model是什么 v-model就是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。
vue2.0实现方法
- 父组件
<template>
<div id="app">
{{username}} <br/>
<my-input type="text" v-model="username"></my-input>
</div>
</template>
<script>
import myinput from './components/myinput'
export default {
name: 'App',
components:{
myinput
},
data(){
return {
username:''
}
}
}
</script>
- myinput.vue:
<template>
<div class="my-input">
<input type="text" @input="handleInput"/>
</div>
</template>
<script>
export default {
name: "myinput",
props:{
value:{ //获取父组件的数据value
type:String,
default:''
}
},
methods:{
handleInput(e){
this.$emit('input',e.target.value) //触发父组件的input事件
}
}
}
</script>
最常见的还有一种事控制模态框的展示与关闭,我们也可以用v-model 以element 的 el-dialog组件为例子
- App.vue
<template>
<div>
<kmDialog
v-model="showDialog"
>
<el-button @click="show">点我</el-button>
</div>
</template>
<script>
import kmDialog from 'KmDialog.vue'
export default {
components: {
KmDialog
}
data () {
return {
showDialog: false
}
},
methods: {
show() {
this.showDialog = true
}
}
}
</script>
- KmDialog.vue
<template>
<el-dialog
:title="isEdit ? '编辑设备' : '新增设备'"
:visible.sync="value"
@close="cancel"
>
<span>这是一段信息</span>
</el-dialog>
</template>
<script>
export default {
props: {
value: {
default: false,
type: Boolean
}
},
methods: {
cancel() {
this.$emit('input', false)
}
}
}
</script>
本文出至:学新通
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/1799
- 联系方式: luke.wu@swvq.com
- 来源链接: www.php.cn/vuejs/499869.html
系列文章
更多
同类精品
更多
精彩评论
-
windows上查看nginx是否启动
PHP中文网 04-19 -
2023年最新的28道PHP面试题附答案
PHP中文网 03-27 -
docker hub 进不去怎么办
PHP中文网 03-15 -
推荐五款xml编辑工具
PHP中文网 03-04 -
navicat怎样清除注册表
PHP中文网 04-05 -
强力推荐10款好看使用的Bootstrap后台管理系统模板
PHP中文网 03-09 -
ChatGPT应用通过Axios+EventSource使用GPT3.5 API
uWydnA 03-13 -
vscode怎么调整代码大小两种方法
PHP中文网 03-11 -
navicat删除的数据能还原吗
PHP中文网 04-09 -
mysql,navicat怎么设置主键自增
PHP中文网 04-08