列表过滤
人员列表
- {{p.name}}-{{p.age}}-{{p.sex}}
列表过滤
人员列表
- {{p.name}}-{{p.age}}-{{p.sex}}
先来个案例引入一下:
人员列表
- {{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修改数组中的某个元素一定要用如下方法:
特别注意:Vue.set() 和 vm.$set() 不能给vm 或 vm的根数据对象 添加属性!!!
若:,则v-model收集的是value值,用户输入的就是value值。
若:,则v-model收集的是value值,且要给标签配置value值。
若:
备注:v-model的三个修饰符:
lazy:失去焦点再收集数据
number:输入字符串转为有效的数字
trim:输入首尾空格过滤
定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)。
语法:
显示格式化后的时间
现在是:{{ fmtTime }}
现在是:{{ getFmtTime() }}
现在是:{{time | timeFormater}}
现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}
尚硅谷
备注:
1.过滤器也可以接收额外参数、多个过滤器也可以串联
2.并没有改变原本的数据, 是产生新的对应的数据
下一篇:MP157-2-TF-A移植: