Vue中计算属性computed的示例解读


Posted in Javascript onJuly 26, 2017

计算属性

表达式是非常便利的,但是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让模板过重且难以维护,所以引入了计算属性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。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
在线编辑器中换行与内容自动提取
Apr 24 Javascript
爆炸式的JS圆形浮动菜单特效代码
Mar 03 Javascript
javascript开发技术大全-第3章 js数据类型
Jul 03 Javascript
jQuery代码优化 选择符篇
Nov 01 Javascript
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
AngularJS基础 ng-model-options 指令简单示例
Aug 02 Javascript
AngularJS 所有版本下载地址
Sep 14 Javascript
jQuery 插件实现随机自由弹跳气泡样式
Jan 12 Javascript
JavaScript使用prototype属性实现继承操作示例
May 22 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 #Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 #Javascript
js实现图片轮播效果学习笔记
Jul 26 #Javascript
Angular4如何自定义首屏的加载动画详解
Jul 26 #Javascript
vue上传图片组件编写代码
Jul 26 #Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
Jul 26 #Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 #Javascript
You might like
TMDPHP 模板引擎使用教程
2012/03/13 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
php中socket的用法详解
2014/10/24 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
Laravel find in set排序实例
2019/10/09 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
django基础之数据库操作方法(详解)
2017/05/24 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
答题辅助python代码实现
2018/01/16 Python
python使用tkinter实现简单计算器
2018/01/30 Python
python读取文本中的坐标方法
2018/10/14 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python中selenium库的基本使用详解
2020/07/31 Python
Python如何将字符串转换为日期
2020/07/31 Python
《地震中的父与子》教学反思
2014/04/10 职场文书
商业融资计划书
2014/04/29 职场文书
推荐信格式要求
2014/05/09 职场文书
4s店活动策划方案
2014/08/25 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
教师批评与自我批评
2014/10/15 职场文书
优秀团员事迹材料
2014/12/25 职场文书
小学班主任教育随笔
2015/08/15 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis