最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中this.$refs.name.offsetHeight獲取不到值問題

 更新時(shí)間:2023年05月19日 09:36:41   作者:qq_36437172  
這篇文章主要介紹了vue中this.$refs.name.offsetHeight獲取不到值問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue this.$refs.name.offsetHeight獲取不到值

通過 vue 動(dòng)態(tài)獲取剩余區(qū)域的滾動(dòng)高度 中的需求,固定高度如果是一個(gè)組件(組件里使用 v-if )時(shí),我們無法通過之前的方式(this.$refs.name.offsetHeight)獲取到數(shù)據(jù),那我們怎么辦呢?

<template>
? <div class="introduce" v-if="JSON.stringify(entryObj) !== '{}'">
? ? ...
? </div>
</template>

此刻我們可以在子組件mounted鉤子中使用 nextTick,傳遞給父組件。

this.$nextTick(() => { //使用nextTick為了保證dom元素都已經(jīng)渲染完畢?
? this.$emit('eventGetHeight',this.$el.offsetHeight);
});

父組件中監(jiān)聽eventGetHeight事件,并取得這個(gè)數(shù)據(jù)。

<introduce?
? :entryObj="intrObj"?
? v-show="!dialogShow"?
? @openDialog="open"?
? @eventGetHeight="getHeight"?
? ref="intr"
></introduce>

獲取到屏幕高度和固定高度后,我們可以計(jì)算出內(nèi)容區(qū)域滾動(dòng)高度了。

getHeight(data){
? let clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
? this.scrollHeight = (clientHeight - data) +'px'
},

只需在內(nèi)容區(qū)域動(dòng)態(tài)設(shè)置屬性即可實(shí)現(xiàn)。

<div style="overflow-x: hidden; overflow-y: scroll;" :style="{ height: scrollHeight }">
? ...
</div>

注意:調(diào)用的組件和 v-if 結(jié)合使用,且組件的數(shù)據(jù)是動(dòng)態(tài)的,即高度也是動(dòng)態(tài)的。

ref不是響應(yīng)式的,所有的動(dòng)態(tài)加載的模板更新它都無法相應(yīng)的變化。

通過渲染子組件成功之后(即獲取到動(dòng)態(tài)數(shù)據(jù)),傳遞給父組件,再進(jìn)行計(jì)算滾動(dòng)區(qū)域。

vue中ref的使用(this.$refs獲取為空)

但是有個(gè)辦法,我們可以使用 

this.$nextTick(() => {
? ? // todo
})
setTimeout(() => {
? ? // todo
}, 0)

來得到數(shù)據(jù)

ref

  • 本身作為渲染結(jié)果被創(chuàng)建,在初始渲染的時(shí)候不能訪問他們,是不存在的
  • $refs不是響應(yīng)式的,只在組件渲染完成后才填充
  • 用于元素或子組件注冊引用信息,注冊完成,將會(huì)注冊在父組件$refs對(duì)象上

如果你獲取到的總是空的,你注意一下

1、你在哪里調(diào)用,和你調(diào)用的對(duì)象

  • 試試在mounted()里面調(diào)用有效果沒有
  • 調(diào)用的對(duì)象是本來就存在的,還是需要數(shù)據(jù)渲染之后才會(huì)出現(xiàn)的,同理,在mounted()里面調(diào)用看看

2、調(diào)用對(duì)象是不是數(shù)組列表

  • 我一開始設(shè)置ref在v-for列表上,直接獲取this.$refs.name.style,永遠(yuǎn)是空的,
  • 后來才發(fā)現(xiàn),this.$refs.name是一個(gè)數(shù)組,無法通過 .style 獲取樣式,
  • 只能遍歷這個(gè)this.$refs.name數(shù)組,在this.$refs.name[index]上設(shè)置樣式

// 更新,這個(gè)說法有點(diǎn)問題

但是像高度寬度,可以通過offsetHeight,等來獲取。

3、調(diào)用對(duì)象是否和v-if結(jié)合使用

  • ref不是響應(yīng)式的,所有的動(dòng)態(tài)加載的模板更新它都無法相應(yīng)的變化。

最后

在使用中,我發(fā)現(xiàn)$refs.style只能設(shè)置該對(duì)象的樣式,獲取出來的值都是空的

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

丹江口市| 诏安县| 遵义县| 阿图什市| 理塘县| 苍梧县| 察隅县| 高邮市| 菏泽市| 富民县| 屏东县| 德化县| 简阳市| 江都市| 宾阳县| 绍兴县| 塔河县| 远安县| 镇原县| 潜江市| 谢通门县| 迁安市| 涟源市| 阿城市| 大港区| 凤山县| 房产| 衡阳县| 遂溪县| 荔浦县| 通江县| 大埔县| 驻马店市| 将乐县| 中宁县| 眉山市| 阿鲁科尔沁旗| 长岛县| 迭部县| 本溪市| 资源县|