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 相关文章推荐
js 实现无缝滚动 兼容IE和FF
Jul 15 Javascript
最新28个很棒的jQuery 教程
May 28 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
JS中取二维数组中最大值的方法汇总
Apr 17 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
javascript将json格式数组下载为excel表格的方法
Dec 22 Javascript
vue使用jsonp抓取qq音乐数据的方法
Jun 21 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
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
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
python使用matplotlib绘制热图
2018/11/07 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
python实现超市商品销售管理系统
2019/10/25 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
劳动实践课感言
2014/02/01 职场文书
社区服务活动总结
2014/05/07 职场文书
自主招生推荐信范文
2014/05/10 职场文书
保护野生动物倡议书
2014/05/16 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
施工安全责任书范本
2014/07/24 职场文书
个人主要事迹材料
2014/08/26 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python