类型:{ [key: string]: string | Function | Object | Array }
详细:
一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。
示例:
var vm = new Vue({
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)
},
方法名
b: 'someMethod',
深度 watcher
c: {
handler: function (val, oldVal) { /* ... */ },
deep: true
},
该回调将会在侦听开始之后被立即调用
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
注意,不应该使用箭头函数来定义 watcher 函数 (例如 searchQuery: newValue => this.updateAutocomplete(newValue))。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.updateAutocomplete 将是 undefined。
<div id="app">
<input type="text" v-model="a">
{{msg}}
<!--根据输入框的内容 算出一个错误信息-->
<!--当给A赋值的时候影响了 错误信心的改变 错误的-->
</div>
<script>
let vm=new Vue ({ //如果写看set方法,并且val给了别人,那当前的a就不会被赋值结果了
el:"#app",
data:{a:"",msg:""},
watch:{ //只有当值变化时才会触发 支持异步了
a(newVal,oldVal){ //watch的属性名要和观察者的名字一样
setTimeout(()=>{
if(newVal.length<3){
return this.msg="少"
}
if(newVal.length>6){
return this.msg="多"
}
this.msg="";
},1000)
}
}
})
</script>转载请注明: Vue教程中文网 - 打造国内领先的vue学习网站-vue视频,vue教程,vue学习,vue培训 » vue中的watch方法详解

