需求展示
firstname+lastname=fullname
实现方式一
利用@keyup事件和methods中的自定义getFullname方法
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="firstname" @keyup="getFullname">+
<input type="text" v-model="lastname" @keyup="getFullname">=
<input type="text" v-model="fullname">
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
firstname:'',
lastname:'',
fullname:''
},
methods:{
getFullname(){
this.fullname=this.firstname+'-'+this.lastname
}
}
});
</script>
</body>
</html>
实现方式二
利用watch实现对数据的监听
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" 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:{//使用这个属性,可以监视data中指定数据的变化,然后触发这个watch中对应的function处理函数
'firstname':function(newVal,oldVal){
// this.fullname=this.firstname+'-'+this.lastname
this.fullname=newVal+'-'+this.lastname
},
'lastname':function(){
this.fullname=this.firstname+'-'+this.lastname
}
}
});
</script>
</body>
</html>
实现方式三
利用computed计算属性
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" 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:''
},
methods:{},
computed:{//在computed中,可以定义一些属性,这些属性,叫做【计算属性】,计算属性的本质,
//就是一个方法,只不过我们在使用这些计算属性的时候,是把它们的名称,直接当作属性来
//使用的;并不会把计算属性当作方法去调用;
//注意1:计算属性,在引用的时候,一定不要加()去调用,直接把它当作普通属性去使用就好了;
//注意2:只要计算属性,这个function内部所用到的任何data中的数据发生了变化,就会立即
//重新计算这个计算属性的值;
//注意3:计算属性的求值结果会被缓存起来,方便下次直接使用;如果计算属性方法中,所有来的
//数据没有发生任何变化,则不会重新对计算属性求值;
'fullname':function(){
return this.firstname+'-'+this.lastname
}
}
});
</script>
</body>
</html>
watch
、computed
和methods
之间的对比
computed
属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用;methods
方法表示一个具体的操作,主要书写业务逻辑;watch
一个对象,键是需要观察的表达式,值是对应的回调函数。主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作;可以看做是computed
和methods
的结合体。