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 相关文章推荐
ext 代码生成器
Aug 07 Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
jquery文字上下滚动的实现方法
Mar 22 Javascript
javascript 判断整数方法分享
Dec 16 Javascript
一个极为简单的requirejs实现方法
Oct 20 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
Bootstrap多级菜单的实现代码
May 23 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
Dec 09 Javascript
react实现antd线上主题动态切换功能
Aug 12 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程序员的技术瓶颈分析
2011/07/17 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
php数组去重的函数代码
2013/02/03 PHP
解析php中反射的应用
2013/06/18 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
三年级科学教学反思
2014/01/29 职场文书
个人简历自我评价范文
2014/02/04 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
天那边观后感
2015/06/09 职场文书
《落花生》教学反思
2016/02/16 职场文书