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 相关文章推荐
国外大牛IE版本检测!现在IE都到9了,IE检测代码
Jan 04 Javascript
Js,alert出现乱码问题的解决方法
Jun 19 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
js中opener与parent的区别详细解析
Jan 14 Javascript
jQuery超赞的评分插件(8款)
Aug 20 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
Jul 05 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
详解jQuery如何实现模糊搜索
May 10 jQuery
原生js实现俄罗斯方块
Oct 20 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
967 个函式
2006/10/09 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
用户注册常用javascript代码
2009/08/29 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
面试常见的js算法题
2017/03/23 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
jQuery实现日历效果
2020/09/11 jQuery
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python将string转换到float的实例方法
2019/07/29 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
django中间键重定向实例方法
2019/11/10 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
应届生财务会计求职信
2013/11/05 职场文书
教师推荐信范文
2013/11/24 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python