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 相关文章推荐
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
使用js检测浏览器的实现代码
May 14 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
Javascript获取background属性中url的值
Oct 17 Javascript
js前端导出Excel的方法
Nov 01 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
Apr 17 Javascript
浅析vue中常见循环遍历指令的使用 v-for
Apr 18 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
Sep 25 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 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
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
js右键菜单效果代码
2007/07/21 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
详解Django中的过滤器
2015/07/16 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python 解压pkl文件的方法
2018/10/25 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
总务岗位职责
2013/11/19 职场文书
公积金单位接收函
2014/01/11 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
Java 多线程协作作业之信号同步
2022/05/11 Java/Android
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS