1.vue的计算属性复杂操作
- computed用来做复杂的运算,因为computed计算属性会进行缓存,计算属性只会调用一次
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$Title$</title>
</head>
<body>
<div id="app">
<h1>总价格:{{totalPrices}}</h1>
</div>
<script src="../js/vue.js"></script>
<script>
const app=new Vue ({
el: '#app',
data: {
message: "张三爱李白",
movies:[
{id: 1001, moviesName: '海贼王', Price: 98},
{id: 1002, moviesName: '七龙珠', Price: 73},
{id: 1003, moviesName: '犬夜叉', Price: 82}
]
},
computed:{
totalPrices: function () {
var then = this
let result = 0
for (let i = 0;then.movies.length; i++) {
result = then.movies[i].Price
}
return result
}
}
})
</script>
</body>
</html>
2.Vue动态属性的setter和getter
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
{{shouName}}
{{fullName}}
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue ({
el:'#app',
data:{
firtName:'李白',
lastName:'苏轼'
},
computed:{
shouName:function (){
return this. firtName+' '+this.lastName
},
fullName:{
set:function (newValue) {
const names = newValue.split(' ')
this. firtName=names[0]
this.lastName=names[1]
console.log(this. firtName+' '+this.lastName)
},
get:function () {
return this. firtName+' '+this.lastName
}
}
}
})
</script>
</body>
</html>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/89e83a33803a12d67d9f8232a6a24b67.png)
3.computed的优势
- 通过定义methods方法展示数据时,多次调用会出现重复调用调用;牺牲了性能
- 通过定义computed定义的计算属性多次调用时,展示数据的时候不会多次调用了;这是因为vue给computed设计了缓存
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<h2>{{firtName}} {{lastName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{getfullName()}}</h2>
<h2>{{getfullName()}}</h2>
<h2>{{getfullName()}}</h2>
<h2>{{getfullName()}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue ({
el:'#app',
data:{
firtName:'李白',
lastName:'苏轼'
},
computed:{
fullName: function (){
console.log('fullName')
return this. firtName+' '+this.lastName
}
},
methods:{
getfullName: function () {
console.log('getfullName')
return this. firtName+' '+this.lastName
}
}
})
</script>
</body>
</html>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/836e2878260c6d4c3a87ac16bee333b7.png)