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 $.ajax入门应用一
Nov 19 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
BootStrap文件上传样式超好看【持续更新】
May 10 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
Bootstrap 实现查询的完美方法
Oct 26 Javascript
微信小程序 swiper组件轮播图详解及实例
Nov 16 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
vue模板语法-插值详解
Mar 06 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
深入理解基于vue-cli的vuex配置
Jul 24 Javascript
JavaScript实现无限级递归树的示例代码
Mar 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
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
js与C#进行时间戳转换
2014/11/14 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
Python中的字典遍历备忘
2015/01/17 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
升职自荐信范文
2013/10/05 职场文书
生日宴会主持词
2014/03/20 职场文书
安全生产标语大全
2014/10/06 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
药店收银员岗位职责
2015/04/07 职场文书
摘录式读书笔记
2015/07/01 职场文书
保护动物的宣传语
2015/07/13 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Python循环之while无限迭代
2022/04/30 Python