vue 计算属性

计算属性

基本用法

1.计算属性的特点

  • 1、可以对属性数据进行逻辑处理操作
  • 2、对计算属性中的数据进行监视,也就是被计算的属性如果被修改,那计算属性后的结果就是被修改后再计算的结果;
    例如:msg:hello vue,经过计算属性计算后,反转值为:vue hello;
    如果此时msg被修改为:my name is vue, 那此时计算属性会监视原来的数据被更改,会重新计算结果为:vue is name my

2.具体实例用法

    var vm = new Vue({
        el: "#app",
        data:{
            msg:"hello vue!"
        },
        computed:{
            msgReverse:function(){
                return this.msg.split(" ").reverse().join(" ");
            }
        }
    })
    调用方法:{{msgReverse}}

3.computed计算属性 VS mehtods内的方法

计算属性的get函数,如果使用methods内的方法,也可以达到同样的效果,那我们为何要使用计算属性呢?
  • 他们之间的区别:
    1).计算属性是依赖于被计算的数据,只有当这个数据发生改变的时候,计算属性才会改变
    2).计算属性是有缓存的,如果被计算的那个数据没有发生改变,不管你访问多少次,
    计算属性返回的值依然是之前计算的值。
    ps:实例方法
           var vm = new Vue({
               el: "#app",
               data:{
                   num:8
               },
               computed:{
                   getNum:function(){
                       console.log(new Date());    // Wed Feb 27 2019 13:00:42 GMT+0800 (中国标准时间)
                       return this.num+1;         // 9
                   }
               },
               methods:{
                   getNum2:function(){
                       console.log(new Date());    // Wed Feb 27 2019 13:00:42 GMT+0800 (中国标准时间)
                       return this.num+1;         // 9
                   }
               }
           })
    
           // 模拟多次访问计算属性,每次结果都一样,new Date()的值也被缓存了,没有发生改变
           setInterval(function(){
               console.log(vm.getNum);     // Wed Feb 27 2019 13:00:42 GMT+0800 (中国标准时间)
                                           // 9
           },1000)
    
           // 模拟多次访问methods内的方法,new Date()每次结果都在发生改变,没有被缓存
           setInterval(function(){
               console.log(vm.getNum2());     // ( new Date的值一直在变化 )
                                           // 9
           },1000)
        ```
    
    
    
    

get和set

计算属性由两部分组成:get和set,get为读取数据,set为设置更改数据
get和set实例用法:
 var vm = new Vue({
         el: "#app",
         data:{
             msg:"hello vue!"
         },
         computed:{
             msgReverse:{
                 get:function(){
                     return this.msg.split(" ").reverse().join(" ");
                 },
                 set:function(value){
                     this.msg = value;           // 这里的vulue等于外部赋的值
                 }
                 
             }
         },
         methods:{
             changeMsg:function(){
                 vm.msgReverse = "i love you"        // 这里赋的值就相当于计算属性内set函数传进去的vuelue
             }
         }
     })
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值