有没有办法在VueJS中设置一个元素高度的观察者?我正在尝试修复搜索结果页面上的过滤器部分。但是如果结果发生变化,就没有办法找到它并取消过滤器。
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>
vwkv1x7d2#
在搜索结果返回数据后,可以使用$ref.yourElement.clientHeight获取高度,然后将高度设置为data{}节的一部分,并从那里应用一个监视器。
new Vue({ el: '#app', data: { height: 0 }, methods: { calculateHeight() { this.height = this.$refs.app.clientHeight; } } });
t0ybt7op3#
如果要观察元件内的元素,请使用箭头功能:
observeHeight() { const resizeObserver = new ResizeObserver(() => { console.log('Size changed:', document.getElementById('elementId').clientHeight;); }); resizeObserver.observe(document.getElementById('elementId')); }
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>
4条答案
按热度按时间atmip9wb1#
您可以使用ResizeObserver并将其集成到Vue-Component中
vwkv1x7d2#
在搜索结果返回数据后,可以使用$ref.yourElement.clientHeight获取高度,然后将高度设置为data{}节的一部分,并从那里应用一个监视器。
t0ybt7op3#
如果要观察元件内的元素,请使用箭头功能:
irtuqstp4#