Vue computed计算属性的使用方法


Posted in Javascript onJuly 14, 2017

computed

computed:相当于method,返回function内return的值赋值在html的DOM上。但是多个{{}}使用了computed,computed内的function也只执行一次。仅当function内涉及到Vue实例绑定的data的值的改变,function才会从新执行,并修改DOM上的内容。

computed和method的对比

<div id="example">
 {{ message.split('').reverse().join('') }}
</div>

这个是vue官网一直拿来作为例子的代码。在{{}}可以很方便的放入单个表达式,但是当一个HTML的DOM里面存在太多的表达式,程序会变得很笨重难于维护。

html

<div id="app9">
  9、method与computed的区别<br/>
  fullName<br/>
  {{fullName}}<br/>
  fullName2<br/>
  {{fullName}}<br/>
  fullNameMethod<br/>
  {{getFullName()}}<br/>
  fullNameMethod2<br/>
  {{getFullName()}}<br/>
</div>

js

var app9 = new Vue({
  el: '#app9',
  data: {
    firstName: 'Foo',
    lastName: 'Bar'
  },
  methods:{
    getFullName:function () {
      console.log("执行了methods")
      return this.firstName+" " +this.lastName;
    }
  },
  computed: {
    fullName: function () {
      console.log("执行了computed")
      return this.firstName + ' ' + this.lastName
    }
  }
})
setTimeout('app9.firstName="Foo2"',3000);

控制台输出的结果

执行了computed
执行了methods
执行了methods
执行了computed
执行了methods
执行了methods 

由此可见使用computed,function只会执行一次。当Vue实例中绑定的data数据改变的时候,computed也相对应的只改变一次。

相同点:在以上代码中,两个p标签都会打印出同样被反转的Hello。

不同点:
使用了methods的:HTML中,每一个调用了Vue的methods的方法,都需要执行一遍reversedMessage()这个方法;
而使用computed计算属性的,只执行一遍将结果保存在缓存中。

computed和watch的对比

html

<div id="demo">{{ fullName }}</div>

js

var vm = new Vue({
 el: '#demo',
 data: {
 firstName: 'Foo',
 lastName: 'Bar',
 fullName: 'Foo Bar'
 },
 watch: {
 firstName: function (val) {
  this.fullName = val + ' ' + this.lastName
 },
 lastName: function (val) {
  this.fullName = this.firstName + ' ' + val
 }
 }
})
var vm = new Vue({
 el: '#demo',
 data: {
 firstName: 'Foo',
 lastName: 'Bar'
 },
 computed: {
 fullName: function () {
  return this.firstName + ' ' + this.lastName
 }
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript读取xml
Nov 04 Javascript
Prototype使用指南之range.js
Jan 10 Javascript
关于JavaScript中string 的replace
Apr 12 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
Jquery基础教程之DOM操作
Aug 19 Javascript
jQuery实现的导航动画效果(附demo源码)
Apr 01 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 #Javascript
JS实现数组去重方法总结(六种方法)
Jul 14 #Javascript
Javascript中Promise的四种常用方法总结
Jul 14 #Javascript
js学习心得_一个简单的动画库封装tween.js
Jul 14 #Javascript
详解VUE中v-bind的基本用法
Jul 13 #Javascript
vue通过watch对input做字数限定的方法
Jul 13 #Javascript
深入理解vue $refs的基本用法
Jul 13 #Javascript
You might like
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
JavaScript 参考教程
2006/12/29 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
js实现拖拽功能
2017/03/01 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
python的re模块应用实例
2014/09/26 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
python的变量与赋值详细分析
2017/11/08 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
小学教师办公室制度
2014/02/03 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
社区党员公开承诺书
2014/08/30 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
电子商务实训报告总结
2014/11/05 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
初中地理教学反思
2016/02/19 职场文书