Vue 读取HTMLCollection列表的length为0

在计算better-scroll右侧列表滚动高度的时候,发现列表的length为0
在这里插入图片描述
原因:上网查阅发现问题可能是由于mounted 不会承诺所有的子组件也都一起被挂载。这个时候dom元素还有没挂载完毕。如果你希望等到整个视图都渲染完毕,可以用 vm.$nextTick 替换掉 mounted:

mounted () {
      this.$nextTick(() => {
      this._initScroll(), this._calculateHeight();
    });  },

但是不清楚为什么使用了这个方法后获取的length依旧为0,
就在_calculateHeight()方法上加了个定时器,等到完全渲染完成时再获取高度(这种问题可能会出现bug,不知道页面什么时候渲染完毕):

_calculateHeight () {
      setTimeout(() => {
        let foodList = this.$refs.right.getElementsByClassName('food-list-hook');
        let height = 0;
        this.listHeight.push(height);
        for (var i = 0; i < foodList.length; i++) {
          let item = foodList[i];
          height += item.clientHeight;
          this.listHeight.push(height);
        }
      }, 200)
    },
发布了26 篇原创文章 · 获赞 6 · 访问量 5081

猜你喜欢

转载自blog.csdn.net/Blablabla_/article/details/103840795