Vue中的计算属性computed

本文深入解析Vue中的计算属性,探讨其如何简化模板表达式的复杂逻辑,实现数据的双向绑定,并通过具体示例展示计算属性的get和set方法的使用。

1. 什么是计算属性

 为什么vue中存在计算属性computed。通过对计算属性的使用,我们可以将原本在模板表达式中的复杂逻辑转移到计算属性中去,避免模板表达式过于臃肿而难以维护。计算属性中可以完成的复杂逻辑既可以是运算也可以是函数调用,最后返回一个最终的计算结果即可。
 具体的定义方式就是computed作为vue实例化对象中的一个option,不同的复杂业务逻辑则在computed下定义具体的方法。即:

computed:{
	function1:function() {
	},
	function2:function() {
	},
	....
}

 具体的使用方式是在视图层中通过{{方法名}}

2. 计算属性的get和set方法

  计算属性中对get和set方法的使用可以实现数据的双向绑定。get和set名固定,无法改变。一般使用方式为

computed:{
	变量名:{
         get:function() {
         },
         set:function(val) {
         }
    }
}

一旦变量名对应的值在脚本的某一处被修改,此时就会将新值传入set并自动调用set方法。视图层中使用{{变量名}},则默认调用的是其对应的get方法。

3. 计算属性具体例子

<!DOCTYPE html>
<html>
	<head>
		<meta charset='utf-8'>
		<head>计算属性computed的使用</head>
	</head>
	<body>
		<div id='app'></div>
		<script type='text/javascript' src='node_modules/vue/dist/vue.js'></script>
		<script type='text/javascript'>
			var vm = new Vue({
				el:'#app',
				data:function() {
					return {
						msg:'12345678',
						talent:'天赋',
						hard:'+努力',
						success:'=成功'
					}
				},
				template:`
					<div>
						<p>msg初始值:{{msg}}</p>
						<p>使用计算属性changeMsg反转msg之后的数据:{{changeMsg}}</p>
						<p>----------------------------------------------</p>
						<p>{{result}}</p>
						<button @click='modifyResult'>点我修改result</button>
					</div>
				`,
				computed:{
					changeMsg:function() {
						 return this.msg.split('').reverse().join('')
					},
					result:{
						get:function() {
							// 相当于字符串的联合没放在html中进行,为了便于维护放在了计算属性中
							return this.talent + this.hard + this.success  
						},

						// 其中substr(参数1,{参数2}) 参数1是字符串的起始位置,参数2是截取的长度,若参数2省略则直接截取到最后一位
						set:function(value) {
							this.talent = value.substr(0,2)
							this.hard = value.substr(2,2)
							this.success = value.substr(4)
						}
					}						
				},
				methods:{
					modifyResult:function() {
						this.result = '上天不会辜负努力的人'
					}
				}
			})
		</script>
	</body>
</html>

运行结果:
在这里插入图片描述
点击按钮“点我修改result”后的结果:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值