• 技术文章 >web前端 >Vue.js

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

    藏色散人藏色散人2023-01-06 21:26:21转载140

    本篇文章给大家带来了关于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实现方法

    • 父组件
    <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" 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>

    最常见的还有一种事控制模态框的展示与关闭,我们也可以用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"
            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中文网其它相关文章!

    声明:本文转载于:juejin,如有侵犯,请联系admin@php.cn删除
    专题推荐:前端 Vue.js
    上一篇:一文带你详解Vue中的组件化编程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • vue项目部署乱码怎么办• 【整理汇总】45+个Vue面试题,带你巩固知识点!• 一文带你详细了解Vue脚手架• 一文带你详解Vue中的组件化编程
    1/1

    PHP中文网