注意:监听的对象必须已经在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. flask多个app应用组合

    由于之前写得接口太多了,分为了多个app,每个app里面有几个接口.部署次数需要很多次,修改成部署一次,在不改变代码的情况下,不使用蓝图,最快的方式就是这样修改. from werkzeug.wsgi ...

  2. 20模板方法模式TemplateMethod

    一.什么是模板方法模式 Template Method模式也叫模板方法模式,是 行为模式之一,它把具有特定步骤算法中的某些 必要的处理委让给抽象方法,通过子类继承对抽 象方法的不同实现改变整个算法的行 ...

  3. Linux date 命令

    date命令用于打印或设置系统日期和时间,常见用法如下: [root@localhost ~]# date //查看当前时间 [root@localhost ~]# date +"%Y-%m ...

  4. C++学习 —— 重新认识C++

    我大概是从读研究生入学那天开始,想要学好C++的,学习C++几乎也成了我每个学期的计划之一.为什么会每个学期都想要学好C++呢?因为每次学习都失败了啊... 本月,我开始再Coursera上学习Het ...

  5. 自己配置 vue 项目 知识体系(自己写脚手架 类似 vue-cli )

    简单的目录结构: |-index.html |-main.js 入口文件 |-App.vue vue文件,官方推荐命名法 |-package.json 工程文件(项目依赖.名称.配置) npm ini ...

  6. java动态加载配置文件(申明:来源于网络)

    java动态加载配置文件 地址:http://blog.csdn.net/longvs/article/details/9361449

  7. 我了解到的新知识之---Cylance Protect是干吗的?

    每家企业都会采购适合自己的杀毒软件来保护企业内的电脑处在安全的状态下,我所在的公司目前在用的是来自美国的初创企业的产品Cylance Protect.,目前这家公司已经在2018年11月份被黑莓公司收 ...

  8. spring 开始构造

    1,选择“org.apache.maven.archetypes:maven-archetype-webapp”骨架(模板),创建一个Web项目: 在main 目录下创建文件夹  java,  res ...

  9. spark-sql中的DataFrame文件格式转储示例

    SparkConf sparkConf = new SparkConf() // .setMaster("local") .setAppName("DataFrameTe ...

  10. Postman 进阶(pre-request scripts&test script)

    Postman 进阶 1. pre-request scripts   pre-request scripts是一个关联了收藏夹内request,并且在发送request之前执行的代码片段.这对于在r ...