vue的计算属性
u4250 2020-11-20
# 计算属性
# 计算属性的使用
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。
<div id="example">
{{ message.split('').reverse().join('') }}
</div>
1
2
3
2
3
模板语法内逻辑多导致语句过长影响阅读,这种情况下可以将逻辑写为函数,调用即可,但更为方便的是使用计算属性
<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
1
2
3
4
2
3
4
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
//完整的计算属性包括getter和setter方法
reversedMessage {
get: function () {
},
set:function(){
return this.message.split('').reverse().join('')
}
}
})
//一般只需要用到getter方法,因此默认的计算属性只包括了getter方法,且简写
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 计算属性与methods方法的不同
两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 message
还没有发生改变,多次访问 reversedMessage
计算属性会立即返回之前的计算结果,而不必再次执行函数。