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获取url参数的使用扩展实例
Dec 29 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 Javascript
自己使用jquery写的一个无缝滚动的插件
Apr 30 Javascript
用html+css+js实现的一个简单的图片切换特效
May 28 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
实例讲解jquery与json的结合
Jan 07 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
微信小程序 基础组件与导航组件详细介绍
Feb 21 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
vue超时计算的组件实例代码
Jul 09 Javascript
微信运维交互机器人的示例代码
Nov 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
图形数字验证代码
2006/10/09 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
three.js实现圆柱体
2018/12/30 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
python直接访问私有属性的简单方法
2016/07/25 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
营销与策划应届生求职信
2013/11/04 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android