查看VueJS中元素的高度

new9mtju  于 2023-03-19  发布在  Vue.js
关注(0)|答案(4)|浏览(326)

有没有办法在VueJS中设置一个元素高度的观察者?
我正在尝试修复搜索结果页面上的过滤器部分。但是如果结果发生变化,就没有办法找到它并取消过滤器。

atmip9wb

atmip9wb1#

您可以使用ResizeObserver并将其集成到Vue-Component中

function observeHeight() {
  const resizeObserver = new ResizeObserver(function() {
     console.log("Size changed");
  });

 resizeObserver.observe(document.getElementById('yourId'));
}

function changeHeight() {
  var elem = document.getElementById('yourId');
  
  console.log('...loading data...')
  setTimeout(function(){ 
    elem.style = "height: 200px";
  }, 3000);
  
}

observeHeight();
changeHeight();
#yourId {
  background-color: beige;
  height: 100px;
}
<div id="yourId">
  
</div>
vwkv1x7d

vwkv1x7d2#

在搜索结果返回数据后,可以使用$ref.yourElement.clientHeight获取高度,然后将高度设置为data{}节的一部分,并从那里应用一个监视器。

new Vue({
  el: '#app',
  data: {
    height: 0
  },
  methods: {
    calculateHeight() {
      this.height = this.$refs.app.clientHeight;
    }
  }
});
t0ybt7op

t0ybt7op3#

如果要观察元件内的元素,请使用箭头功能:

observeHeight() {
      const resizeObserver = new ResizeObserver(() => {

        console.log('Size changed:', document.getElementById('elementId').clientHeight;);
      });

      resizeObserver.observe(document.getElementById('elementId'));
    }
irtuqstp

irtuqstp4#

<script setup>

const list = ref([
    'sdg sdfg sdfhs fhseraj sdhbfjasvfkjvaskjvfuas', 
    'ggs dfg s', 
    'sdg s sfg sfgs dfg'
])

const itemRefs = ref([])

onMounted(() => {
   alert(itemRefs.value[1].clientHeight)
})

</script>

<template>
  <ul style="width: 50px">
    <li v-for="item in list" ref="itemRefs">
      {{ item }}
    </li>
  </ul>
</template>

相关问题