Vue监听

72 阅读1分钟

new Vue({

el:"#app",

data:function (){

return {

msg:'你好',

obj:{

a:0,

b:0

}

}

},

/* 因为vue不是操作dom了,视图的变化是根据数据来的 */

/* 对数据进行实时监控的方法 监听器 */

watch:{

/* handler是数据msg 发生变化的时候触发的方法 */

msg:{

immediate:true,

handler:function(newVal,oldVal){

console.log('新值:'+newVal);

console.log('旧值:'+oldVal);

}

}

/* 对象里面的key 最传统的方式其实就是要加引号 */

'obj.a':{

immediate:true,

handler:function(newV,oldV){

console.log('a',newV,oldV);

}

},

'obj.b':{

immediate:true,

handler:function(newV,oldV){

console.log('b',newV,oldV);

}

},

obj:{

immediate:true,

handler:function(newV,oldV){

/* newV.a会报错使用 newV是一个变量 */

console.log('obj',newV['a'],oldV['b']); },

/* 深度监听对象里面的属性值 */

/* 深度监听 对象里面的值每次发生变化都会触发handler方法 */

/* 因为对象是引用数据类型,所以

每次值发生变化,对应的内存地址并没有发生变化,所以newV

和oldV都是同一个 */

deep:true

}

},

methods:{

add(){

this.msg = 'hello'

this.$set(this.obj,'c','123')

this.$delete(this.obj,'a')

}

}

})