亲宝软件园·资讯

展开

vue v-model响应式原理

前端碎碎念 人气:0

v-model

  • 首先要了解v-model就是vue帮我们封装的语法糖,真正实现靠的还是:
  • v-bind:绑定响应式数据 触发 input 事件 并传递数据

例如下面示例:

<template>
	// 这两种写法等价
	<input v-bind:name="name" v-on:input="name=$event.target.value"/>
	<input v-model="name"/>
</template>

1、使用v-model经典例子

2、使用v-model的副作用

绑定的响应式对象某个不存在的属性,那么vue会悄悄增加这个属性,并设置为响应式

// template中:
<el-input v-model="user.tel"></el-input>
// script中:
export default {
  data() {
    return {
      user: {
        name: 'xxx',
      }
    }
  }
}

3、自己开发的组件如何支持v-model

model属性的默认值为

// 默认的 model 属性
export default {
  model: {
    prop: 'value',
    event: 'input'
  },
  data() {...},
  methods: {...},
}

响应式实现

简单一句话理解就是:通过重写数据的get和set属性方法,让数据在被渲染时通过get属性方法把所有用到自己的观察者watcher放入自己的观察者列表subs中,当数据发生变化之后,通过set属性方法将该变化通知给所有的观察者watcher,达到重新渲染。

实现响应式的主要流程:

1、Observer类的构造方法

2、收集依赖
视图被渲染时,触发get属性方法,调用dep的一个方法dep.depend进行依赖收集

举个

加载全部内容

相关教程
猜你喜欢
用户评论