1 computed属性的实现原理
- Vue实例初始化时,给data的每个属性(dataKey)都添加getter和setter方法
- 计算属性computed初始化时,提供的函数将作为对应属性(computedKey)的getter方法
其中,
computedKey: function(){
return this.dataKey+'change'
}
- 当首次获取计算属性的值是,dep开始收集依赖,即收集到dataKey和computedKey的依赖关系
- 在dataKey变化时,此时会调用dataKey的getter方法,通过dep收集的依赖,可以判定出data与computed对应数据的依赖关系
- 此时可以做到,在data发生变化时,computed属性数据也发生变化
2.computed属性的用法
目的:为了避免模板中加入太多的计算公式,不够精炼明了
简单用法:
<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
在模板文件中,只需要写reversedMessage即可,它与message是有依赖关系的。