Eric小屋

  • v-model 原理
  • 表单类组件封装 & v-model 简化代码
  • .sync修饰符
  • ref 和 $refs
  • Vue异步更新、$nextTick
  • 首页
  • 学习笔记
    • JAVA
    • Spring
    • Node.js
    • Vue
  • 学习文档
  • 案例项目
  • 课程笔记
  • 问题解决
登录

Vue 进阶语法

  • Eric
  • 2024-01-05
  • 0

v-model 原理

原理:v-model本质上是一个语法糖。
例如应用在输入框上,就是 value属性 和 input事件 的合写。

作用:提供数据的双向绑定

① 数据变,视图跟着变 :value

② 视图变,数据跟着变 @input

注意:$event 用于在模板中,获取事件的形参

表单类组件封装 & v-model 简化代码

1、表单类组件 封装 → 实现 子组件 和 父组件数据 的 双向绑定

① 父传子:数据 应该是父组件 props 传递 过来的,拆解 v-model 绑定数据

② 子传父:监听输入,子传父传值给父组件修改

2、父组件 v-model 简化代码,实现 子组件 和 父组件数据 双向绑定

① 子组件中:props 通过 value 接收,事件触发 input

② 父组件中:v-model 给组件直接绑数据 ( :value + @input )

.sync修饰符

作用:可以实现 子组件 与 父组件数据 的 双向绑定,简化代码

特点:prop属性名,可以自定义,非固定为 value

场景:封装弹框类的基础组件, visible属性 true显示 false隐藏

本质:就是 :属性名 和 @update:属性名 合写

<BaseDialog :visible.sync="isShow" />
--------------------------------------
<BaseDialog
  :visible="isShow" 
  @update:visible="isShow = $event"
/>
props: {
  visible: Boolean
},
this.$emit('update:visible', false)

ref 和 $refs

作用:利用 ref 和 $refs 可以用于 获取 dom 元素, 或 组件实例

特点:查找范围 → 当前组件内 (更精确稳定)

① 获取 dom:

1. 目标标签 – 添加 ref 属性

<div ref="chartRef">我是渲染图表的容器</div>

2. 恰当时机, 通过 this.$refs.xxx, 获取目标标签

mounted () {

console.log(this.$refs.chartRef)

},
// 基于准备好的dom,初始化echarts实例
const myChart = echarts.init(document.querySelector('.box'));

② 获取组件:

1. 目标组件 – 添加 ref 属性

<BaseForm ref="baseForm"></BaseForm>

2. 恰当时机, 通过 this.$refs.xxx, 获取目标组件,

就可以调用组件对象里面的方法

this.$refs.baseForm.组件方法()

Vue异步更新、$nextTick

需求:编辑标题, 编辑框自动聚焦

1. 点击编辑,显示编辑框

2. 让编辑框,立刻获取焦点

this.isShowEdit = true // 显示输入框

this.$refs.inp.focus() // 获取焦点

问题:"显示之后",立刻获取焦点是不能成功的!

原因:Vue 是 异步更新 DOM (提升性能)

$nextTick:等 DOM 更新后, 才会触发执行此方法里的函数体
语法: this.$nextTick(函数体)

this.$nextTick(() => {

this.$refs.inp.focus()

})

联系作者:2572976830@qq.com
© 2025 Eric小屋
Theme by Wing
京ICP备2023032157号 京公网安备11011402053616号
  • {{ item.name }}
  • {{ item.name }}