当前位置: 移动技术网 > IT编程>脚本编程>vue.js > Vue computed计算属性的使用方法

Vue computed计算属性的使用方法

2017年12月12日  | 移动技术网IT编程  | 我要评论

浏阳市,广商校园风,许欢颜申综昊

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
 }
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网