千家信息网

怎么深入了解vue中的v-model

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家介绍怎么深入了解vue中的v-model,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,要明白我们学习v-model的作用是什么一个组件上的 v-model 默
千家信息网最后更新 2026年11月03日怎么深入了解vue中的v-model

这篇文章给大家介绍怎么深入了解vue中的v-model,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

首先,要明白我们学习v-model的作用是什么

一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value attribute 用于不同的目的。model 选项可以用来避免这样的冲突 ---这是在vue官网找到的解答。

其次,是我们要知道v-model的本质以及他的实现原理是什么

在我看来v-model本身就是一个语法糖,实际上就是给我们提供了一个vue的内置指令,通过这样的方式既简化了我们的代码也能让我们明白这个命令应该怎么去使用

使用v-model指令能够让我们直接获取到我们在input框里面输入的内容,将输入的内容保存到我们的data数据里面,当input的value值发生改变的时候就会自动更新data数据同时也会使相应的视图进行更新渲染。

  

{{model}}

双向绑定MVVM他的原理其实就是监听数据当数据发生改变的时候继而更新页面视图。

MVVM流程图

下图就是双向绑定的原理,通过数据劫持以及模板解析通过一步步流程来监听我们的数据更新视图

Observer数据劫持相关代码

Observer其实就是个观察者 他通过循环遍历来监听我们data数据中的每一项,当data数据发生改变的时候,就会通过notify方法派发更新给订阅者,同时进行Compile进行我们的文本编译从而实现部分视图进行更新。

class Observe {    constructor(vm) {        this.walk(vm.data)    }    // 循环遍历 让 data 里每一个key 都监听     walk(data) {        Object.keys(data).forEach( key => {            this.defineReactive(data, key, data[key])        })    }    // 定义响应式  这个函数也是响应式的核心函数    defineReactive(data, key, value) {        let dep = new Dep()        Object.defineProperty(data, key, {            get() {                console.log('触发 get 收集依赖');                // 收集依赖                if( Dep.target ) {                    // 添加订阅者                    dep.addSub(Dep.target)                }                return value            },            set(newValue) {                console.log(value, '触发 set 派发更新');                // 新值覆盖旧值                value = newValue                // 派发更新                dep.notify()            },        })    }}

Watcher视图更新

Watcher就是我们的订阅者,通过update方法进行视图的更新

    constructor(vm, exp, cb ) {        this.vm = vm;        this.exp = exp;        this.cb = cb;        this.value = this.get()    }    // 更新    update() {        this.run()    }    // 更新 DOM    run() {        const value = this.get()        // 新旧值进行比对        if( value !== this.value ) {            // 调用回调函数             this.cb.call(this.vm, value)        }    }    // 收集依赖    get() {        Dep.target = this        let value = this.vm.data[this.exp]        Dep.target = null;        return value    }}

关于怎么深入了解vue中的v-model就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

更新 数据 就是 视图 内容 监听 函数 原理 时候 订阅者 订阅 输入 代码 双向 同时 指令 方法 更多 流程 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技巨头监管 善班互联网科技 远信互联网科技 智慧科技互联网 科技创新互联网企业 人人互联网科技是培训 互联网科技股有哪些 衡水科技产业互联网平台 云创客互联网科技公司 玖二柒互联网科技公司待遇 温州喔噻互联网科技有限公司 彤创互联网科技有限公司 岳阳华臻互联网科技有限公司 健康食品互联网创新科技园项目 996高科技互联网公司 华中科技大学互联网的牛人 小米互联网科技园入驻 新氧科技和美国互联网有关系吗 银川新华互联网科技学校原画 科技信息时代互联网发展 网络科技有限互联网 北京互联网科技有限公司 互联网金融 科技金融 伴你行互联网科技有限公司 随着互联网科技发展 晓花互联网科技有限公司网址 合肥互联网科技公司公章图片 中天科技中国工业互联网 山东大美朱楼互联网科技有限公司 版纳互联网科技选哪家
0