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 相关文章推荐
jQuery 对象中的类数组操作
Apr 27 Javascript
jQuery操作select的实例代码
Jun 14 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
jQuery实现鼠标经过图片预览大图效果
Apr 10 Javascript
Jquery插件分享之气泡形提示控件grumble.js
May 20 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
基于JavaScript如何制作遮罩层对话框
Jan 26 Javascript
JQuery EasyUI的使用
Feb 24 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
js实现楼层导航功能
Feb 23 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
让你彻底掌握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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python实现截屏的函数
2015/07/25 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
python openpyxl使用方法详解
2019/07/18 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
监理资料员岗位职责
2014/01/03 职场文书
医德医魂心得体会
2014/09/11 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
追悼会答谢词
2015/01/05 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android