1.基本用法

  • 用途:对某个数据进行监听并执行对应的回调,可以是data中的数据,还可以是计算属性
  • 语法:在watch对象下添加字段,字段名为要监听的数据,字段值一般是fucntion,也可以是对象
  • 回调函数有2个参数:数据发生改变后的值,数据发生改变前的值
<script>
var vm = new Vue({
el:"#app",
data(){
return {
title:"hello world",
}
},
watch:{
//监听data中的值
title(newVal,oldVal){
console.log('now = ',newVal,oldVal)
},
//监听计算属性
reversedTitle(newVal,oldVal){
console.log('nowSecond = ',newVal,oldVal)
}
},
computed:{
reversedTitle: function () {
// `this` 指向 vm 实例
return this.title.split('').reverse().join('')
}
}
})
//修改data中的数据
setTimeout(()=>{
vm.title = "vue.js"
},1000)
</script>

执行结果:

title =  vue.js hello world
index.html:43 reversedTitle = sj.euv dlrow olleh

2.监听对象内部属性的变化

  • 如果要监听多层次的数据,例如a.b.c,则属性名需要用引号包裹起来
  • 如果父级对象的值发送变化,则会使这个监视属性的回调函数执行
<body>
<div id="app">
<p>{{name}}</p>
<button @click="test">修改wife.name</button>
<button @click="test2">修改wife</button>
</div>
</body>
<script>
var vm = new Vue({
el:'#app',
data: {
name: '郭靖',
age: 20,
wife: {
name: '黄蓉',
sex: '女'
}
},
watch: {
//监听wife中的name属性
'wife.name'(newVal,oldVal){
console.log('wife.name发生了改变')
},
//监听wife
'wife'(newVal,oldVal){
console.log('wife发生了改变')
}
},
methods:{
test(){
this.wife.name = "'黄帮主'"
},
test2(){
this.wife = {name:'我不是黄蓉',sex:'women'}
}
}
})
</script>

运行结果表明,无论是他父级对象的值发生了改变,还是它本身的值发生了改变,都会使这个监视属性的回调函数执行。

3.监听路由变化

提示:路由的路径信息保存在$route.path中

watch:{
'$route.path':function(newval){
console.log('change')
}
}

4.数组问题

  • 直接通过下标对数组元素进行赋值不会触发页面更新,需要使用push()/shift()/splice()等方法来更新数组(这些方法应该是重新封装过)
  • 但是v-model指令绑定的数组元素没有这个问题,能更新页面,也能触发相关watch

5.深度监听

  • 将监听属性的值设定为对象,则可以配置更多的特性
  • deep:深度监听,默认false,不能监听对象内部的变化
  • handler:回调函数
  • immediate:页面初始化时是否触发回调,默认false
var vm = new Vue({
el:'#app',
data: {
name: '郭靖',
age: 20,
wife: {
name: '黄蓉',
sex: '女'
}
},
watch: {
wife:{
deep:true,
handler:function(newVal,oldVal){
console.log('value is change')
},
immediate:true
}
}
}) vm.wife.name = '黄帮主' // 触发wife属性对应的回调

Vue.js 监视属性的更多相关文章

  1. Vue.js 计算属性是什么

    Vue.js 计算属性是什么 一.总结 一句话总结: 模板 表达式 维护 在模板中表达式非常便利,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护 ...

  2. Vue.js 计算属性(computed)

    Vue.js 计算属性(computed) 如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护.对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到 ...

  3. Vue.js 计算属性

    Vue.js 计算属性 使用计算属性的实例: <!DOCTYPE html> <html> <head> <meta cahrset="utf-8& ...

  4. vue.js计算属性 vs methods

    计算属性:Vue.js 模板内的表达式非常便利,但是缺点就是只能用于简单的运算,如果模板中有太多的逻辑运算会让模板不堪重负且难以维护.恰恰计算属性可以处理复杂的逻辑运算,也就是说对于任何复杂逻辑你都应 ...

  5. Vue.js 计算属性computed和methods的区别

    在vue.js中,有methods和computed两种方式来动态当作方法来用的 如下: 两种方式在这种情况下的结果是一样的 写法上的区别是computed计算属性的方式在用属性时不用加(),而met ...

  6. Vue.js 计算属性的秘密

    计算属性是一个很邪门的东西,只要在它的函数里引用了 data 中的某个属性,当这个属性发生变化时,函数仿佛可以嗅探到这个变化,并自动重新执行. 上述代码会源源不断的打印出 b 的值.如果希望 a 依赖 ...

  7. Vue.js:计算属性

    ylbtech-Vue.js:计算属性 1.返回顶部 1. Vue.js 计算属性 计算属性关键词: computed. 计算属性在处理一些复杂逻辑时是很有用的. 可以看下以下反转字符串的例子: 实例 ...

  8. Vue.js学习笔记(一) - 起步

    本篇将简单介绍一下Vue.js,并在Node.js环境下搭建一个简单的Demo. 一.简介 我个人理解,Vue.js是一套前端视图层的框架,它只关心视图展示和数据绑定,它的一些语法与Angular 1 ...

  9. vue.js 常用语法总结(一)

    作者:曾萍,目前就职于京东商城. 概述 2016年已经结束了.你是否会思考一下,自己在过去的一年里是否错过一些重要的东西?不用担心,我们正在回顾那些流行的趋势.通过比较过去12个月里Github所增加 ...

  10. vue.js应用开发笔记

    看vue.js有几天了,之前也零零散散的瞅过,不过一直没有动手去写过demo,这几天后台事比较少,一直在讨论各种需求(其实公司对需求还是比较重视与严谨的,一个项目需求讨论就差不多一周了,这要搁之前,天 ...

随机推荐

  1. Angular 17+ 高级教程 – Routing 路由 (功能篇)

    前言 这篇只讲功能不讲原理.没有循序渐进,没有由浅入深,一个主题讲到底. Route 目录 上一篇 Angular 17+ 高级教程 – Routing 路由 (原理篇) 下一篇 Angular 17 ...

  2. QT疑难杂症之QML程序中如何使用文件系统模型QFileSystemModel?

    简介 本文介绍了 QML程序中如何使用树状控件TreeView展示QT文件系统模型QFileSystemModel中的数据,并给出了两种实现模式. 目录 QML程序中使用文件系统模型的代码 树状控件自 ...

  3. 嵌入式Linux ubi文件系统制作、分区设置、只读文件系统,uboot启动参数root

    当前平台, 基于君正的X10000平台的嵌入式Linux 系统 0  目的 我要设置根文件系统为可读写, 设置data分区上的文件系统为只读 1 设置各文件系统的读写属性 /bin/mount -o ...

  4. Kubernetes集群安装(十三)

    为了根据最新的集群特性,我们这里安装目前最新的版本 v1.19.3,如果你是在生产环境使用,建议使用上一个版本中最大的修正版本,比如 v1.15.5,由于 v1.16 版本之后和之前的版本有很大变化, ...

  5. 系统 内核启动期间使用ftrace

    启动阶段使能event trace 同上,配置commandline: trace_event=sched:*,timer:*,irq:* trace_buf_size=40M 有上面的实例可以知道, ...

  6. linux那些事之页迁移(page migratiom)

    Page migration 页迁移技术是内核中内存管理的一种比较重要的技术,最早该技术诞生于NUMA系统中(Page migration [LWN.net]),后续由于内存规整以及CMA和COW技术 ...

  7. linux cpufreq framework(5)_ARM big Little driver

    1. 前言 也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中? 众所周知,ARM的big·Little架构,也称作HMP(具体可参考 ...

  8. KubeSphere 宣布开源 Thanos 的企业级发行版 Whizard

    日前,青云科技宣布开源 Thanos 的企业级发行版 Whizard,为企业带来真正高可用.可扩展.可存储与查询海量监控数据.易运维.安全的 Prometheus 长期存储方案. Prometheus ...

  9. 会话层技术-cookie

    会话层技术cookie的使用 cookie拿下! package com.atguigu.servlet; import javax.servlet.ServletException; import ...

  10. Cartographer学习——2D栅格地图构建

    前言: 到目前为止,对于点云数据的预处理过程已经介绍完毕,如:点云数据多传感器时间同步.运动畸变校正.重力校正.体素滤波等.做完这一系列的预备工作之后,实际上呢,就可以进行点云的扫描匹配了. 在讲解扫 ...