watch单个监听
computed多个监听
当watch监听复杂数据类型的时候需要做深度监听deep
watch深度监听deep表达式:
// 深度监听
watch:{
msg:{
handler(val, oldval){
if(val.text == 'love'){
alert('I Love You')
}
},
deep:true//开启深度监听
}
}
watch深度监听
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app">
<div>watch监听器</div>
<input type="text" v-model="msg.text">
</div>
<script type="text/javascript">
new Vue({
el:'#app',
data(){
return {
msg:{text:''},
}
},
// 深度监听
watch:{
msg:{
handler(val, oldval){
if(val.text == 'love'){
alert('I Love You')
}
},
deep:true//开启深度监听
}
}
})
</script>
</body>
</html>
watch监听
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app">
<div>watch监听器</div>
<input type="text" v-model="msg">
</div>
<script type="text/javascript">
new Vue({
el: '#app',
data() {
return {
msg: ''
}
},
// 深度监听
watch: {
msg: {
handler(val, oldval) {
if (val == 'love') {
alert('I Love You')
}
}
}
}
})
</script>
</body>
</html>
computed多监听
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app">
<div>computed监听</div>
<br>
(<input type="text" v-model="n1">+
<input type="text" v-model="n2">)*
<input type="text" v-model="n3">={{result}}
</div>
<script type="text/javascript">
new Vue({
el:'#app',
data(){
return {
n1:'',
n2:'',
n3:''
}
},
// computed监听多个
computed:{
result(){
return (Number(this.n1)+Number(this.n2))*Number(this.n3)
}
}
})
</script>
</body>
</html>