1. 监听器的应用场景
1.1. 数据变化时执行异步或开销比较大的操作。
1.2. 监听器用法
watch: {
// 监听firstName的值的变化
firstName: function(val){
this.fullName = val + "" + this.lastName;
}
}
2. 监听器例子
2.1. 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>监听器</title>
</head>
<body>
<div id="app">
<div>
<span>姓: </span><input type="text" v-model="firstName" />
</div>
<div>
<span>名: </span><input type="text" v-model="lastName" />
</div>
<div>{{fullName}}</div>
<div>{{computedFullName}}</div><hr />
<div>
<span>用户名:</span>
<span><input type="text" v-model.lazy='userName' /></span>
<span>{{tip}}</span>
</div>
</div>
<script type="text/javascript" src="vue.min.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data: {
firstName: "",
lastName: "",
fullName: "",
userName: "",
tip: ""
},
methods: {
checkUserName: function(userName){
var me = this;
setTimeout(function(){
if(userName == "zhangsan"){
me.tip = "用户名已经存在, 请换一个..."
}else{
me.tip = "用户名可用..."
}
}, 2000);
}
},
computed: {
computedFullName: function(){
var value = this.firstName + this.lastName;
console.log(value)
return value;
}
},
watch: {
firstName: function(val){
this.fullName = val + "" + this.lastName;
},
lastName: function(val){
this.fullName = this.firstName + val;
},
userName: function(val){
this.checkUserName(val);
this.tip = "正在验证...";
}
}
});
</script>
</body>
</html>
2.2. 效果图