Vue学习笔记(二)

126 阅读3分钟

v2官网:v2.cn.vuejs.org/

常见指令

- v-model

  1. 作用:给表单元素使用,实现数据双向绑定,可以快速获取设置表单元素内容
  2. 语法:v-model='变量'

综合案例 - 记事本

BA18AB5549B13BA749E4E091DD153CBC.png

功能总结

  • 列表渲染

    • v-for
    • key值的设置
    • 插值表达式
  • 删除

    • v-on传参调用
    • filter过滤得到符合条件的新数组
    • 覆盖原数组
  • 添加

    • v-model绑定
    • unshift方法向数组最前面添加元素
  • 底部统计和清空

    • list.length统计长度
    • 覆盖数组清空列表
    • v-show控制隐藏

指令修饰符

  • 通过 "." 指明一些指令 后缀,不同 后缀 封装了不同的处理操作 --> 简化代码
    1. @key.enter ---> 键盘回车监听
    2. v-model.trim ---> 去除首尾空格
    3. v-model.number ---> 转数字
    4. @事件名.stop ---> 阻止冒泡
    5. @事件名.prevent ---> 阻止默认行为

v-bind 对于样式控制的增强 --- 操作class

  • 语法: :class="对象/数组"
  1. 对象 --> 键就是类名,值是布尔值。若值为true,有这个类,否则没有
  2. 数组 --> 数组中所有的类,都会添加到盒子上,本质就是一个 class 列表

综合案例 - 页面tab导航高亮

CC5A3B7D3E1C6292164C9CE9B7CE67F9.png

  • 核心思路

    1. 基于数据动态渲染tab ---> v-for
    2. 准备下标高亮的是哪一个tab ---> activeIndex
    3. 基于下标,动态控制 class类名 ---> v-bind:class

1E73EC88C7BF011B5BD55C07FC5EDA40.png

v-bind 对于样式控制的增强 --- 操作style

  • 语法::style="样式对象"

433E2AE4A0A107407A41FE63EC81DDB8.png

  • 适用场景:某个具体属性的动态设置

BA56091874AD1064874BAAFE9755E9AD.png

v-model应用于其它表单元素

  • 常见的表单元素都可以用v-model绑定关联 ---> 快速获取或设置表单元素的值
  • 它会根据控件类型自动选取正确的方法来更新元素
  • 给单选框加上name属性可以实现分组,组内元素不可同时选中

计算属性

  • 概念:基于现有的数据,计算出来的新属性。依赖的数据变化,自动重新计算。
  • 语法
    1. 声明在computed配置项中,一个计算属性对应一个函数
    2. 使用起来和普通属性一样使用 {{ 计算属性名 }}

D3D93B5600CAF94C3CDCAA4020FF9AF0.png

computed计算属性 与 methods方法

computed

  • 作用:封装了一段对于数据的处理,求得一个结果
  • 缓存特性:computed会对计算出来的结果缓存,再次使用时直接读取缓存,从而提升性能
  • 语法:
    1. 写在computed配置项中
    2. 作为属性,直接使用 ---> this.计算属性,调用以处理业务逻辑

methods

  • 作用:给实例提供一个方法,调用以处理业务逻辑

计算属性的完整写法

  • 计算属性默认简写,只能读取,不能修改
  • 完整写法:

153C1AF2997C64D888DAC03A9BF59752.png

综合案例---成绩单

技术点总结

  • 渲染(低于60分的高亮显示)
    1. v-if v-else:根据数据展示不同页面
    2. v-for:展示数据
    3. v-bind:class:动态控制样式
  • 删除
    1. v-on:click绑定点击事件并传参,再用filter过滤覆盖原数组
    2. @click.prevent阻止默认行为
  • 添加
    1. v-model 修饰符:.trim .number
    2. unshift 修改数组更新视图
  • 统计总分、平均分
    1. computed 计算属性
    2. reduce 求和

EB96AECEAC7B0A4FC0277B3A501EEB26.png 效果图:

4C9535944522D56EC244E4A99B4E905E.png

watch监听器

  • 语法
    • 简单写法 ---> 监视简单类型的变化
    • 06CA2FEA462DF659BA2E1187D512D89C.png
    • 完整写法 ---> 添加额外的配置项(深度监视复杂类型,立刻执行)
    • 2AA809D2CF6F24296CC00AF84C618D0B.png

水果购物车

微信图片_20241005232708.png

技术点总结

  • 渲染
    1. v-if/v-else
    2. v-for
    3. :class
  • 删除
    1. 点击传参
    2. filter过滤覆盖原数组

微信图片_20241005233411.png

  • 修改个数
    1. 点击传参
    2. find方法找对象

微信图片_20241005233523.png

  • 全选反选
    1. computed的完整写法 = get/set
    2. every方法来遍历获取每一项的值
    3. forEach方法来遍历设置每一项的值

微信图片_20241005233632.png

  • 统计选中的总价和总数量
    1. computed + reduce条件求和
    2. 在reduce中设置条件

微信图片_20241005233905.png

  • 持久化到本地
    1. watch监视
    2. localStorage用来操作浏览器储存
    3. JSON.stringify转JSON格式
    4. JSON.parse来解析JSON格式

微信图片_20241005234110.png