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 操作/获取table具体代码
Jun 13 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
Jan 10 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
Jan 14 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
Nov 29 Javascript
Javascript 对cookie操作详解及实例
Dec 29 Javascript
Bootstrap进度条实现代码解析
Mar 07 Javascript
angular ng-click防止重复提交实例
Jun 16 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 Javascript
Javascript读写cookie的实例源码
Mar 16 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Apr 20 Javascript
javascript实现异形滚动轮播
Nov 28 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从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php实现encode64编码类实例
2015/03/24 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
PHP对象相关知识总结
2017/04/09 PHP
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
Python操作Excel之xlsx文件
2017/03/24 Python
python requests 使用快速入门
2017/08/31 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
python字符串下标与切片及使用方法
2020/02/13 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
关键字final的用法
2013/10/02 面试题
delegate与普通函数的区别
2014/01/22 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
文科生自我鉴定
2014/02/15 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
空气的环保标语
2014/06/12 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
护士辞职信怎么写
2015/02/27 职场文书
给校长的建议书范文
2015/09/14 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书