Vue中的watch属性
2019-08-16 本文已影响0人
最爱喝龙井
vm实例
中的watch
属性,是用来监视数据的改变的,他是个对象,里面定义函数,函数名就是数据名,这个函数接收两个参数newVal
和oldVal
,一个代表新数据,一个代表旧数据,当数据发生改变的时候,就会触发这个函数。
例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model='firstName'>+
<input type="text" v-model= 'lastName'>=
<input type="text" v-model='fullName'>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
firstName:'',
lastName:'',
fullName:''
},
methods: {},
watch: {
firstName:function(newVal, oldVal) {
this.fullName = newVal + this.lastName;
},
lastName: function(newVal, oldVal) {
this.fullName = this.firstName + newVal;
}
}
});
</script>
</body>
</html>
watch的牛逼之处,在于他可以监视一些非Dom元素,比如路由,看下面的例子:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
<script src="js/vue-router-3.0.1.js"></script>
</head>
<body>
<div id="app">
<router-link to="/login">登陆</router-link>
<router-link to="/register">注册</router-link>
<router-view></router-view>
</div>
<script>
var login = {
template: '<h1>这是登陆页面</h1>'
}
var register = {
template: '<h1>这是注册页面</h1>'
}
var router = new VueRouter({
routes:[
{path: '/', redirect: '/login'},
{path: '/login', component: login},
{path: '/register', component: register}
]
})
var vm = new Vue({
el: '#app',
data: {},
methods: {},
router,
watch: {
'$route.path': function(newVal, oldVal) {
if(newVal == '/login') {
console.log('欢迎进入登陆界面')
}else if(newVal == '/register') {
console.log('欢迎进入注册页面')
}
}
}
});
</script>
</body>
</html>