Vue中计算属性computed的示例解读
2017-07-26 11:49
1151 查看
表达式是非常便利的,但是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让模板过重且难以维护,所以引入了计算属性computed,将复杂的逻辑放入计算中进行处理,同时computed有缓存功能,防止复杂计算逻辑多次调用引起的性能问题。
computed原理
computed的属性reversedMessage在data中会有一个对我们不可见的cacheReversedMessage属性对应
cacheReversedMessage的值是根据其绑定的data中的message来决定的 获取reversedMessage会返回
cacheReversedMessage的值 message更新之后会立马调用reversedMessage的get方法去给cacheReversedMessage赋值(无论reversedMessage在dom中是否使用) cacheReversedMessage的值发生变化时,相应的dom也会发生变化
注意:computed中的属性和data中的属性名字不能相同,一个属性要么在data里;要么在computed里,computed里的属性要跟data中的配合使用,当data属性发生变化时才会调用get方法更新reversedMessage的值,否则get方法即使返回一个随机数,reversedMessage的值也不会变。
示例代码
computed相当于属性的一个实时计算,如果实时计算里关联了对象,那么当对象的某个值改变的时候,同事会出发实时计算。
比如:
<body id="content"> <parent :childrens="childrens"></parent> </body> <!-- 这个测试主要想证明: 对于计算属性里如果关联对象,即使对象不是组件作用域内的,当对象在外部改变了某个属性,同样会出发计算属性的方法--> <script> var parent = Vue.extend( { props: { childrens: '' }, template: '<div >{{age}}</div>', data: function() { return { name: '', age: 18 }; }, computed: { age: function() { return this.childrens.age +10; } }, created: function() { var _parent = this.$parent; this._set = {}; this._set = _parent; } } ); var vm = new Vue( { el: 'body', data: { childrens: { name: '小强', age: 20, sex: '男' } }, components: { 'parent': parent } } ); vm.$data.childrens.age = 10; </script>
当
vm.$data.childrens.age这个值改变的时候,动态触发computed里的age属性计算,最后显示到页面的结果是:20。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
相关文章推荐
- vue-计算属性computed
- Vue:计算属性computed
- vue从入门到进阶:计算属性computed与侦听器watch(三)
- Vue.js学习 Item5 -- 计算属性computed与$watch
- vue.js计算属性用法(computed)
- vue 计算属性computed和观察watch 和方法methods
- vue的computed计算属性学习
- Vue 中计算属性computed和method
- Vue计算属性(computed)、methods、watched三者区别
- 详解Vue的computed(计算属性)使用实例之TodoList
- Vue.js每天必学之计算属性computed与$watch
- vue.js计算属性用法(computed)技巧,依赖其他vue实例的数据
- vue.js计算属性computed用法实例分析
- Vue.js学习 Item5 -- 计算属性computed与$watch
- vue中的计算属性的使用和vue实例的方法示例
- vue的计算属性(computed)、methods、watched三者区别
- vue中计算属性(computed)、methods和watched之间的区别
- vue.js 计算属性及计算属性(computed)、methods、watched三者区别
- Vue.js第三天学习笔记(计算属性computed)
- Vue.js学习 Item5 -- 计算属性computed与$watch