美文网首页
Vue - v-model原理

Vue - v-model原理

作者: ElricTang | 来源:发表于2019-10-25 10:26 被阅读0次

v-model相当于一个自定义指令,通过事件监听和属性绑定实现双向数据绑定。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src='./node_modules/vue/dist/vue.js'></script>
        <script src='./node_modules/vue-resource/dist/vue-resource.js'></script>
    </head>
    <body>
        <div id='app'>
            <input :value="msg" @input="msg = $event.target.value" />
            <span>{{msg}}</span>
            <button @click="change">改变msg</button>
        </div>
        <script>
            var vm=new Vue({
                el:'#app',
                data:{
                    msg:'',
                },
                methods:{
                    change(){
                        this.msg = 'hello'
                    }
                }
            })
        </script>
    </body>
</html>
    1. 使用:value绑定msginput
    1. 使用@input监听输入事件,当输入时把输入的内容又赋值给msg

总结:

  • data -> view : 通过v-bind实现数据绑定
  • view -> data : 通过oninput监听输入并修改data

扩展:在子组件中实现v-model

 <!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src='./node_modules/vue/dist/vue.js'></script>
        <script src='./node_modules/vue-resource/dist/vue-resource.js'></script>
    </head>
    <body>
        <div id='app'>
            <myModel :value="msg" @input="change"></myModel>
            <span>{{msg}}</span>
            <button @click="msg='default'">修改data</button>
        </div>
        <script>
            let myModel = {
                template:`<div>
                    <input 
                    :value="value" 
                    @input="$emit('input',$event.target.value)">
                    </input>
                    </div>`,
                props:['value']
            }
            var vm=new Vue({
                el:'#app',
                components:{
                    mymodel:myModel
                },
                data:{
                    msg:'',
                },
                methods:{
                    change(val){
                        this.msg = val;
                    }
                }
            })
        </script>
    </body>
</html>
  • 在子组件中只不过是添加了父子组件传值的过程而已
    其中<myModel :value="msg" @input="change"></myModel>
    等价于<myModel v-model="msg"></myModel>

相关文章

  • vue学习-基础,事件和数据交互

    vue数据双向绑定(v-model)原理? vue指令 v-text === {{}} {{}} 页面会显示变量...

  • 03 Vue 通信中的 v-model

    1. v-model 的原理 我们在 vue 项目中主要使用 v-model指令在表单 、 及 元素上创...

  • v-model原理

    1. v-model是什么? 在表单控件或者组件上实现双向绑定 2. v-model 原理: vue的双向绑定是由...

  • Vue之v-model

    目标:1、了解v-model的本质。2、了解v-model的实现原理。 我们知道Vue的核心特性之一是双向绑定,v...

  • vue中的v-model原理,与组件自定义v-model

    VUE中的v-model可以实现双向绑定,但是原理是什么呢?往下看看吧 根据官方文档的解释,v-model其实是一...

  • vue双向数据绑定原理

    vue中通过v-model进行一个双向数据绑定。 双向数据绑定的原理是什么? Vue内部通过Object.defi...

  • 前端高频面试题-VUE部分

    单页应用 概念 优缺点 MVVM VUE响应式的原理 data为什么是函数 v-model的原理 v-if 和 v...

  • Vue3的v-model以及传值

    Vue3:v-model 一、v-model:双向绑定 Vue3:v-model规定: 属性名任意(假设为xxx)...

  • vue表单

    vue中表单主要通过v-model实现数据的双向绑定,实现原理主要通过javascript的object.defi...

  • Vue - v-model原理

    v-model相当于一个自定义指令,通过事件监听和属性绑定实现双向数据绑定。 使用:value绑定msg到inpu...

网友评论

      本文标题:Vue - v-model原理

      本文链接:https://www.haomeiwen.com/subject/zkwcvctx.html