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 Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
jQuery照片伸缩效果不影响其他元素的布局
May 09 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
高效Web开发的10个jQuery代码片段
Jul 22 Javascript
详解Javascript中的原型OOP
Oct 12 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
详解Require.js与Sea.js的区别
Aug 05 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
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
angular2实现统一的http请求头方法
2018/08/13 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
python之Socket网络编程详解
2016/09/29 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
全面分析Python的优点和缺点
2018/02/07 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
python实例化对象的具体方法
2020/06/17 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
如何用PHP实现邮件发送
2012/12/26 面试题
中专毕业生个人职业生涯规划
2014/02/19 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
营销计划书
2015/01/17 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
个人原因辞职信模板
2015/05/13 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书