zoukankan      html  css  js  c++  java
  • Vue watch 监听 computed

    computed 的英文意思是计算,那么顾名思义,vue中的computed也与计算有关,他是专门用来处理复杂表达式的,在vue中,不建议在模板语法中写复杂的表达式,如:x+y+(z-1) 这种,所以vue建了一个computed用来处理这类表达式,使用方法其实也不难,在computed里面建一个函数并写表达式,然后在想要引用的地方将之当成data里的值引用即可,例如想要在模板语法里面用,只需要写函数名即可,并且不用加括号,具体例子如下:
    
    data中定义三个值:
    
    data(){
        return{
            num1: 10,
            num2: 20,
            nums: 5
        }
    },
    
    然后在computed中写一条表达式:
    
    computed:{ //计算函数,复杂的计算都应该放在这里,尽量不要直接在模板语法里面计算,在此处计算的值是会动态变的,即计算的数中有一个值变了,最终结果也会跟着变,类似于封装的计算函数
        addNum:function(){ //addnum可以直接在模板语法里面用,相当于data内的值
            return Number(this.nums) + Number(this.num1) + Number(this.num2);
        }
    },
    
    之后在模板语法中应用
    
    <div>{{addNum}}</div> //addNum即为定义的表达式

    在工作中写了一个购物车,当用户点击商品数量按钮(增加或者减少)的时候,就会自动计算出总价的变化。
    总价是使用computed计算出来的
    总价在在子组件中计算的,只能通过this.$emit(‘自定义事件’)的方式将子组件的总价数据传递给父组件
    需要在计算总价的时候触发$emit() 或者 监听总价数据变化的时候触发 $emit事件

    watch监听compoted
        computed: {
            // 根据单价和数量计算出总价
            total: function () {
    			var totalPrice = this.goodsNum * this.price;
    			// 计算总价的时候向父组件传递数据
    			// this.$emit('totalNumChange', totalPrice);
                return totalPrice;
            }
        },
        watch: {
    		// 监听computed中的属性
            total: function (newValue, oldValue) {
                this.$emit('totalNumChange', newValue)
            },
        }
    

      

      

    watch 

  • 相关阅读:
    NOI模拟赛 6.20
    NOI模拟赛 6.17
    NOI模拟赛 6.16
    计算几何学习笔记
    NOI(p)模拟赛 5.30
    NOI模拟赛 5.26
    [AGC022E] Median Replace 题解
    看完魔圆之后的一点感想(大概
    OI学习日志 11月份
    2021 CSP-S 游记
  • 原文地址:https://www.cnblogs.com/zhanglanzuopin/p/15305246.html
Copyright © 2011-2022 走看看