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 相关文章推荐
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
Jquery读取URL参数小例子
Aug 30 Javascript
jquery实现的缩略图预览滑块实例
Jun 25 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
js微信分享实现代码
Oct 11 Javascript
jquery实现左右轮播图效果
Sep 28 jQuery
微信小程序修改swiper默认指示器样式的实例代码
Jul 18 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
Aug 10 Javascript
vue实现路由监听和参数监听
Oct 29 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
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
玩转方法:call和apply
2014/05/08 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python SQLite3简介
2018/02/22 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
django ORM之values和annotate使用详解
2020/05/19 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android