本篇文章给大家带来了关于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(附代码示例)的详细内容。更多信息请关注PHP中文网其他相关文章!