所属分类:web前端开发
本篇文章给大家带来了关于vue的相关知识,其中主要给大家介绍了我们为什么使用v-model?用vue怎么实现v-model的,感兴趣的朋友一起来看一下吧,希望对大家有帮助。
v-model主要提供了两个功能,view层输入值影响data的属性值,data属性值发生改变会更新view层的数值变化。
其核心就是,一方面modal层通过defineProperty来劫持每个属性,一旦监听到变化通过相关的页面元素更新。另一方面通过编译模板文件,为控件的v-model绑定input事件,从而页面输入能实时更新相关data属性值。
<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>
登录后复制
<template>
<div class="my-input">
<input type="text" class="my-input__inner" @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>
登录后复制
<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>
登录后复制
<template>
<el-dialog
:title="isEdit ? '编辑设备' : '新增设备'"
:visible.sync="value"
width="40%"
@close="cancel"
>
<span>这是一段信息</span>
</el-dialog>
</template>
<script>
export default {
props: {
value: {
default: false,
type: Boolean
}
},
methods: {
cancel() {
this.$emit('input', false)
}
}
}
</script>
登录后复制
推荐学习:《vue.js视频教程》
以上就是一文详解vue怎么实现v-model(附代码示例)的详细内容,更多请关注zzsucai.com其它相关文章!