vue学习31~39(列表过滤+列表排序+vue检测data中的数据+收集表单数据+过滤器)
创始人
2024-03-01 13:19:17
0

1.14 列表过滤



列表过滤

人员列表

  • {{p.name}}-{{p.age}}-{{p.sex}}

1.15 列表排序



列表过滤

人员列表

  • {{p.name}}-{{p.age}}-{{p.sex}}

1.16 vue 监测data 中的 数据

先来个案例引入一下:


人员列表

  • {{p.name}}-{{p.age}}-{{p.sex}}

点击更新马冬梅的信息,马冬梅的数据并没有发生改变。

在这里插入图片描述

我们来看看控制台:
在这里插入图片描述

控制台上的数据发生了改变,说明,这个更改的数据并没有被 Vue 监测到。

所以我们来研究一下 Vue 监测的原理。

我们先研究 Vue 如何监测 对象里的数据

代码


学校名称:{{name}}

学校地址:{{address}}

在这里插入图片描述

讲一下解析模板后面的操作—>调用 set 方法时,就会去解析模板----->生成新的虚拟 DOM----->新旧DOM 对比 -----> 更新页面

模拟一下 vue 中的 数据监测


在这里插入图片描述

Vue.set 的使用

Vue.set(target,propertyName/index,value) 或

vm.$set(target,propertyName/index,value)

用法

向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 vm.myObject.newProperty = 'hi')

代码


学生信息


Vue.set() 或 vm.$set 有缺陷:

注意对象不能是Vue实例,或者Vue实例的根数据对象,即 vm 和 _data

看完了 vue 监测对象中的数据,再来看看 vue 如何监测 数组里的数据

先写个代码案例


爱好

  • {{h}}

朋友们

  • {{f.name}}--{{f.age}}

在这里插入图片描述

所以我们通过 vm._data.student.hobby[0] = ‘aaa’ // 不奏效

vue 监测在数组那没有 getter 和 setter,所以监测不到数据的更改,也不会引起页面的更新

在这里插入图片描述

既然 vue 在对数组无法通过 getter 和 setter 进行数据监视,那 vue 到底如何监视数组数据的变化呢?

vue对数组的监测是通过 包装数组上常用的用于修改数组的方法来实现的。

vue官网的解释:

在这里插入图片描述

总结:



总结Vue数据监测

学生信息







姓名:{{student.name}}

年龄:{{student.age}}

性别:{{student.sex}}

爱好

  • {{h}}

朋友们

  • {{f.name}}--{{f.age}}

Vue监视数据的原理:

  • vue会监视data中所有层次的数据

  • 如何监测对象中的数据?

    通过setter实现监视,且要在new Vue时就传入要监测的数据。

    • 对象中后追加的属性,Vue默认不做响应式处理

    • 如需给后添加的属性做响应式,请使用如下API:

      Vue.set(target,propertyName/index,value) 或

      vm.$set(target,propertyName/index,value)

  • 如何监测数组中的数据?

    通过包裹数组更新元素的方法实现,本质就是做了两件事:

    • 调用原生对应的方法对数组进行更新
    • 重新解析模板,进而更新页面
  • 在Vue修改数组中的某个元素一定要用如下方法:

    • 使用这些API:push()、pop()、shift()、unshift()、splice()、sort()、reverse()
    • Vue.set() 或 vm.$set()

特别注意:Vue.set() 和 vm.$set() 不能给vm 或 vm的根数据对象 添加属性!!!

1.17 收集表单数据

若:,则v-model收集的是value值,用户输入的就是value值。


账号:

密码:

年龄:

若:,则v-model收集的是value值,且要给标签配置value值。


性别:男

若:

  • 没有配置input的value属性,那么收集的就是checked(勾选 or 未勾选,是布尔值)
  • 配置input的value属性:
    • v-model的初始值是非数组,那么收集的就是checked(勾选 or 未勾选,是布尔值)
    • v-model的初始值是数组,那么收集的的就是value组成的数组

爱好:学习打游戏吃饭

所属校区

其他信息:

阅读并接受《用户协议》

在这里插入图片描述

备注:v-model的三个修饰符:

lazy:失去焦点再收集数据

number:输入字符串转为有效的数字

trim:输入首尾空格过滤

1.18 过滤器(非重点)

定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)。

语法:

  • 注册过滤器:Vue.filter(name,callback) 或 new Vue{filters:{}}
  • 使用过滤器:{{ xxx | 过滤器名}} 或 v-bind:属性 = “xxx | 过滤器名”

显示格式化后的时间

现在是:{{ fmtTime }}

现在是:{{ getFmtTime() }}

现在是:{{time | timeFormater}}

现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}

尚硅谷

备注:

1.过滤器也可以接收额外参数、多个过滤器也可以串联

2.并没有改变原本的数据, 是产生新的对应的数据

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...