vue使用v-for为列表每一项动态添加ref

有这样一个需求:

因为list列表可能每一项的高度都不一样,要实现左侧步骤条动态高度,需要获取列表每一项的具体高度。所以想到给list每一项添加一个 ref,从而获取每一项的高度。

1、使用index给每一项添加 ref ,:ref="`line_item${index}`" ,这样每一项都会有一个不同的 ref,line_item0、line_item1...

 <div class="line_item" :ref="`line_item${index}`" v-for="(item, index) in lineTimeList" :key="index">
</div>

2、通过for循环获取每一项的高度

initLineHeight(){
      this.lineHeight = 0
      if(this.lineTimeList.length>1){
        this.lineTimeList.forEach((item,index) => {
          if(index<this.lineTimeList.length-1){
            // 不要最后一个li
            this.lineHeight+=this.$refs[`line_item${index}`][0].offsetHeight
          }
        });
      }
    },

注意:this.$refs[`line_item${index}`] 返回的是一个数组,所以需要this.$refs[`line_item${index}`][0]获取第一项就可以

 

本文是获取高度,如果要获取其他属性,按需获取。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值