一文详解vue怎么实现v-model(附代码示例)

 3071

本篇文章给大家带来了关于vue的相关知识,其中主要给大家介绍了我们为什么使用v-model?用vue怎么实现v-model的,感兴趣的朋友一起来看一下吧,希望对大家有帮助。


一文详解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实现方法

父组件

  1. <template>
  2.   <div id="app">
  3.     {{username}} <br/>
  4.     <my-input type="text" v-model="username"></my-input>
  5.   </div>
  6. </template>
  7.  
  8. <script>
  9. import myinput from './components/myinput'
  10. export default {
  11.   name: 'App',
  12.   components:{
  13.       myinput
  14.   },
  15.   data(){
  16.     return {
  17.       username:''
  18.     }
  19.   }
  20.  
  21. }
  22. </script>

myinput.vue:

  1. <template>
  2.     <div class="my-input">
  3.         <input type="text" class="my-input__inner" @input="handleInput"/>
  4.     </div>
  5. </template>
  6.  
  7. <script>
  8.     export default {
  9.         name: "myinput",
  10.         props:{
  11.             value:{ //获取父组件的数据value
  12.                 type:String,
  13.                 default:''
  14.             }
  15.         },
  16.         methods:{
  17.             handleInput(e){
  18.                 this.$emit('input',e.target.value) //触发父组件的input事件
  19.             }
  20.         }
  21.     }
  22. </script>

最常见的还有一种事控制模态框的展示与关闭,我们也可以用v-model 以element 的 el-dialog组件为例子


App.vue

  1. <template>
  2.     <div>
  3.         <kmDialog
  4.             v-model="showDialog"
  5.         >
  6.         <el-button @click="show">点我</el-button>
  7.     </div>
  8. </template>
  9. <script>
  10.     import kmDialog from 'KmDialog.vue'
  11.     export default {
  12.         components: {
  13.             KmDialog
  14.         }
  15.         data () {
  16.             return {
  17.                 showDialog: false
  18.             }
  19.         },
  20.         methods: {
  21.             show() {
  22.                 this.showDialog = true
  23.             }
  24.         }
  25.     }
  26. </script>

KmDialog.vue

  1. <template>
  2.     <el-dialog
  3.         :title="isEdit ? '编辑设备' : '新增设备'"
  4.         :visible.sync="value"
  5.         width="40%"
  6.         @close="cancel"
  7.       >
  8.         <span>这是一段信息</span>
  9.     </el-dialog>
  10. </template>
  11. <script>
  12.     export default {
  13.         props: {
  14.             value: {
  15.                 default: false,
  16.                 type: Boolean
  17.             }
  18.         },
  19.         methods: {
  20.             cancel() {
  21.                 this.$emit('input', false)
  22.             }
  23.         }
  24.     }
  25. </script>


TAG标签:
本文网址:https://www.zztuku.com/index.php/detail-13705.html
站长图库 - 一文详解vue怎么实现v-model(附代码示例)
申明:本文转载于《掘金社区》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐