计算属性与监听器
计算属性
模板内尽量使用简单的表达式,而不要做复杂的函数转换。
对于任何复杂逻辑,都可以使用计算属性实现。
<div id="example">
<p>
Original message:"{{message}}"
</p>
<p>
Computed reversed message:"{{reversedMassage()}}"
</p>
</div>
var vm =new Vue({
el:"#example",
data:{
message:"hello"
},
computed:{
reversedMassage=function(){
return this.message.split('').reverse().join('');
}
}
})
计算属性缓存
计算属性是基于它们的响应式依赖进行缓存的,只要相关的变量没有被重新赋值,那么计算属性也不会更新。
计算属性的setter
计算属性默认只有getter,在需要时可以提供一个setter
computed:{
fullName:{
get:function(){
return this.firstName+''+this.lastName
},
set:function(newVal){
var names=newVal.split('')
this.firstName=names[0]
this.lastName=names[names.length-1]
}
}
}
这时,更改全名时会调用setter,first和last都会更新。
侦听器watch
所谓侦听器,就是当数据发生变化时,及时做出相应处理。
因此,vue提供watch选项响应数据变化,当需要在数据变化时执行异步或开销较大的操作时,这个方式时最有用的。
<body>
<div id="app">
<input type="text" v-model="message">
<h2>状态:{{ state }}</h2>
</div>
</body>
let vm = new Vue({
el: '#app',
data: {
message: 'Hello',
state: '【未修改】'
},
watch: {//监听属性
// 绑定监听数据
message: function (e){
// 当数据修改时做出响应(处理函数)
this.state = '【已修改😀】'
// ...
}
}
})
并且,watch的监听是及时的。即使在watch内部修改监听对象的值,也会立即触发监听。