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使用cookie
Feb 02 Javascript
jQuery toggle()设置CSS样式
Nov 05 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
javascript控制图片播放的实现代码
Jul 29 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
Feb 10 Javascript
js禁止表单重复提交
Aug 29 Javascript
JavaScript定义函数的三种实现方法
Sep 23 Javascript
基于打包工具Webpack进行项目开发实例
May 29 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
基于Vue 撸一个指令实现拖拽功能
Oct 09 Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
让你彻底掌握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+MYSQL的文章管理系统(二)
2006/10/09 PHP
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
Python基础之文件读取的讲解
2019/02/16 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
英国自行车商店:AW Cycles
2021/02/24 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
Java编程面试题
2016/04/04 面试题
职高毕业生自我鉴定
2013/10/21 职场文书
自荐信结尾
2013/10/27 职场文书
英语专业毕业生自荐信范文
2013/12/31 职场文书
六查六看自查材料
2014/02/17 职场文书
小学生演讲稿大全
2014/04/25 职场文书
营销总监岗位职责
2014/09/16 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
陕西导游词
2015/02/04 职场文书
护士自荐信怎么写
2015/03/06 职场文书
Go timer如何调度
2021/06/09 Golang