注意:监听的对象必须已经在data中声明了

 data: {
a: 1,
b: 2,
c: 3,
d: 4,
e: {
f: {
g: 5
}
}
},
watch: {
a: function (val, oldVal) {
console.log('new: %s, old: %s', val, oldVal)
},
// string method name
b: 'someMethod',
// deep watcher
e: {
handler: function (val, oldVal) { /* ... */ },
deep: true
},
// the callback will be called immediately after the start of the observation
d: {
handler: function (val, oldVal) { /* ... */ },
immediate: true
},
e: [
function handle1 (val, oldVal) { /* ... */ },
function handle2 (val, oldVal) { /* ... */ }
],
// watch vm.e.f's value: {g: 5}
'e.f': function (val, oldVal) { /* ... */ }
}
})
vm.a = 2 // => new: 2, old: 1

  比如下面例子

//监听某个变量
watch: {
bet(newValue, oldValue) {
console.log(newValue);
}
}
//监听对象 某一个属性
watch: {
'bet.text': function (val, oldVal) {}
}
//监听 整个对象(数组)
serviceList:{
handler(){ //注意此处就是handler
console.log(this.serviceList);
},
deep:true,
immediate: true // watch 的一个特点是,最初绑定的时候是不会执行的,要等到 serviceList 改变时才执行监听计算。加上改字段让他最初绑定的时候就执行
},

  

对于vue的深层对象数组的监控 可能不能得到及时的刷新 直接对比oldVal 和newVal时可能对比不出变化来,若想根据具体值的变化 而对内部其他的参数赋值 需要在nextTick里面进行,比如:

deep1.pars  pars 是 [{min:'',max:'',fix:''},{min:'',max:'',fix:''}]
需求时pars数组的第一项的max的变化修改第二项的min值等于第一项的max 通过监控deep1.pars的变化 对内部元素赋值时需要使用nextTick
但是建议若是min和max是用户触发的 可以使用change事件去监控变化并且做相应的修改操作
 

vue 监听变量或对象的更多相关文章

  1. 用VUE监听数组和对象的变化

    看一下演示代码,先是增加数组和对象. <template> <div> <p>这是我定义的数组</p> <div>{{this.arr}}& ...

  2. React和Vue中,是如何监听变量变化的

    React 中事件监听 本地调试React代码的方法 先将React代码下载到本地,进入项目文件夹后yarn build 利用create-react-app创建一个自己的项目 把react源码和自己 ...

  3. vue 监听对象里的特定数据

    vue  监听对象里的特定数据变化 通常是这样写的,只能监听某一个特定数据 watch: { params: function(val) { console.log(val) this.$ajax.g ...

  4. vue watch监听不到对象,探究 watch 原理

    最近使用vue watch时,在某些模块监听不到对象的改变,无法触发回调函数. 解决: 使用watch监听对象时,只能监听到该对象初始化时已存在的key值. 如下例监听user对象,在初始化时没有ag ...

  5. Vue跨路由触发事件,Vue监听sessionStorage

    近来,在做公司的聊天系统,引用的是极光的api.项目需求实时监听别人发过来的消息,进行渲染到页面,还有历史记录也要渲染,历史记录和实时聊天记录返回的结构体还不一样,看到需求的我欲哭无泪,首先登录是在首 ...

  6. vue监听滚动事件,实现滚动监听

    在vue中实现滚动监听和原生js无太大差异,下面是一个简单的demo,可在控制台查看结果 <!DOCTYPE html> <html lang="en"> ...

  7. vue 监听页面宽度变化 和 键盘事件

    vue 监听页面窗口大小 export default { name: 'Full', components: { Header, Siderbar }, data () { return { scr ...

  8. Vue 监听鼠标左键 鼠标右键以及鼠标中键修饰符click.left&contextmenu&click.middle

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Vue 监听键盘,键盘修饰符keyup

    附录:键盘Key Code对照表 代码: <!doctype html> <html lang="en"> <head> <meta ch ...

随机推荐

  1. A股主要指数的市盈率(PE)估值高度

    全指材料(SH000987) - 2019-03-18日,当前值:14.6662,平均值:29.73,中位数:25.66,当前 高于 6.91% 的交易日.全指材料(SH000987)的历史市盈率PE ...

  2. linux系统搜索文件中关键字的位置

    grep -Irn “ubuntu”-------即查出文件的目录路径

  3. css特效 - 环形文字

    记一次群友问题和回答: 下面这种效果,文字是动态的,不能使用图片的情况下,前端怎么实现? 一.插件实现: arctext.js 教程地址:实现文字平滑弯曲弧形效果的插件-arctext.js 二.原生 ...

  4. 使用cmd导入导出oracle数据库dmp文件

    exp scott/test@192.168.0.195/orcl file=C:\Users\zz\Desktop\1\gd_base.dmp log=C:\Users\zz\Desktop\1\g ...

  5. Vue2学习笔记:计算属性(computed)

    参考:https://www.cnblogs.com/zycbloger/p/6428907.html

  6. padding 和 float属性

    padding = {上内,右内,下内,左内} 内边距 padding:"10, 5,15,20" float = "true"  控件固定住.

  7. vue中mint-ui的index-list 在手机端滑动问题

    官方的demo这里滑动很流畅,按着官网demo复制的在手机上必须手指拖着才能动,不能滑动: 加入 这段代码就行 -webkit-overflow-scrolling: touch; overflow- ...

  8. lsass.exe占用cpu 解决方法

    最终解决办法如下: RD /s /q "%USERPROFILE%\AppData\Roaming\Microsoft\Protect"

  9. [ovs] openvswitch 从源码编译安装

    文档:https://docs.openvswitch.org/en/latest/intro/install/general/ 1. yum install autoconf automake li ...

  10. 树莓派3 之 USB摄像头安装和使用

    需求 如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵).如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头.你可能已经在PC上安装过了.我买的如图的这 ...