vue计算属性

简介: 计算属性

vue计算属性的使用

我们有时候会在模板中绑定表达式来做简单的数据处理,但是如果表达式太长,就会变得臃肿难以维护,比如

{{text.split(',').reverse().join(',')}}

表达式里面包含了3个操作,有时候可能会更加复杂,这时我们可以使用计算属性。如下

{{reversedText}}
data(){return{
text:'123,456'}
},
computed: {
reversedText:function() {//这里的this指向的是当前的vue实例returnthis.text.split(',').reverse().join(','); //如果这两的text是后台接受的数据,最好加个判断数据为不为空}
}
}

在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果就可以,计算属性还可以依赖多个

数据,只要其中任何一个数据变动,计算都会重新执行。例如:

data(){return{
package1: [
{
name:'iPhoneX',
price:300,
count:1},
{
name:'iPad',
price:100,
count:2}
],
package2: [
{
name:'apple',
price:2,
count:5},
{
name:'orange',
price:1,
count:10}
]
}
},
computed: {
price:function() {varprice=0;for(vari=0; i<this.package1.length; i++){
price+=this.package1[i].price*this.package1[i].count}for(vari=0; i<this.package2.length; i++){
price+=this.package2[i].price*this.package2[i].count}returnprice;
}
}
}

当package1或者package2中price和count有任何变动时,计算属性都会price都会自动更新,视图中的总价也会自动变动。


每个计算属性都包含一个getter和setter,上面的例子都是计算属性的默认用法,只是利用了getter来读取。计算属性提供的setter函数,当你手动修改计算属性的值时,就可以触发setter函数,执行一些操作。例如


姓: {{firstName}}

名: {{lastName}}

姓名:{{fullName}}


data(){return{
firstName:'wang',
lastName:'leilei'}
},
computed: {
fullName: {//getter用于读取get: function() {returnthis.firstName+' '+this.lastName;
},
set:function(newValue) {varnames=newValue.split(' ');this.firstName=names[0];this.lastName=names[names.length-1];
}
}
}
}
相关文章
|
1天前
|
JavaScript 前端开发 容器
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
12 1
|
1天前
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable扩展属性的升级修改
ruoyi-nbcio-plus基于vue3的flowable扩展属性的升级修改
|
1天前
|
JavaScript
vue打印v-model 的值
vue打印v-model 的值
|
1天前
|
JavaScript
vue知识点
vue知识点
4 1
|
1天前
|
JavaScript
Vue实战-组件通信
Vue实战-组件通信
4 0
|
3天前
|
存储 JavaScript
Vue当前时间与接口返回时间的判断
Vue当前时间与接口返回时间的判断
8 0
|
3天前
|
JavaScript 前端开发
Vue生成Canvas二维码
Vue生成Canvas二维码
8 0
|
1天前
|
JavaScript
Vue实战-将通用组件注册为全局组件
Vue实战-将通用组件注册为全局组件
5 0
|
2天前
|
JavaScript 前端开发
vue的论坛管理模块-文章评论02
vue的论坛管理模块-文章评论02
|
2天前
|
JavaScript Java
vue的论坛管理模块-文章查看-01
vue的论坛管理模块-文章查看-01