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 在线压缩和格式化收藏
Jan 16 Javascript
IE6,IE7下js动态加载图片不显示错误
Jul 17 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
May 07 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
Javascript中的Callback方法浅析
Mar 15 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
BootStrap中Table分页插件使用详解
Oct 09 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
QML实现圆环颜色选择器
Sep 25 Javascript
node.js +mongdb实现登录功能
Jun 18 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
ftp类(example.php)
2006/10/09 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
详解Django配置JWT认证方式
2020/05/09 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
刑事上诉状范文
2015/05/22 职场文书
详解Vue router路由
2021/11/20 Vue.js
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python