Vue官网学习(计算属性和侦听器:一、计算属性)

13 篇文章 0 订阅
13 篇文章 0 订阅

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>

所以,对于有着复杂的计算并且复用性高的,这种情况下,我们应该使用计算属性:
下面举个例子说明:(有ES6的语法,不懂的可以去看看ES6的语法)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>计算属性</title>
	</head>
	<body>
		<div id="app">
			<div>全名: {{fullName}}</div>
			<div>总分数为 :{{totalScores}}</div>
			<div>平均分 :{{avgScores}}</div>
			<div>最高分 :{{maxScores}}</div>
			<div>最低分 :{{minScores}}</div>
		</div>
	</body>
	<script src="../js/vue.min.js"></script>
	<script>
		new Vue({
			el: '#app',
			data: {
				firstName: "zanmu",
				lastName: 'si',
				students: [
					{id: 1, scores: 56},
					{id: 2, scores: 86},
					{id: 3, scores: 70},
					{id: 4, scores: 90},
					{id: 5, scores: 60},
					{id: 6, scores: 78},
					{id: 7, scores: 87},
					{id: 8, scores: 76}
				]
			},
			computed: {
				fullName(){
					return this.lastName + " " + this.firstName
				},
				totalScores(){
					return this.students.reduce((totalScores, curr) => {
							return totalScores + curr.scores
					},0)
				},
				avgScores(){
					return (this.totalScores/this.students.length).toFixed(2)
				},
				maxScores(){
					let arr = this.getSortList;
					return arr[0].scores;
				},
				minScores(){
					let arr = this.getSortList;
					return arr[arr.length-1].scores;
				},
				getSortList(){
					return this.students.sort((item1, item2) => {
						return item2.scores - item1.scores
					})
				}
			}
		});
	</script>
</html>

最后的结果就是:

全名: si zanmu
总分数为 :603
平均分 :75.38
最高分 :90
最低分 :56
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值