<swiper class="voting-swiper" :style="{height: `${votingHeight}rpx`}" :current="currentIndex" indicator-color="rgba(199, 29, 38, 0.42)" indicator-active-color="#C71D26" indicator-dots="true" @change="swiperChange">
<swiper-item class="voting-slide" v-for="(item, index) in voteInfoList" :key="index">
<div class="voting-item" :id="'content-wrap' + index">
......
</div>
</swiper-item>
</swiper>
data() {
return {
votingHeight: 0,
voteInfoList: [],
currentIndex: 0
};
},
onLoad(option) {
const _this = this;
setTimeout(() => {
_this.setSwiperHeight();
}, 2000);
},
methods: {
async setSwiperHeight() {
const element = "#content-wrap" + this.currentIndex;
const query = uni.createSelectorQuery().in(this);
const res = await new Promise((resolve, reject) => {
query.select(element).boundingClientRect(data => {
resolve(data);
}).exec();
});
this.votingHeight = res.height * 2;
console.log(res, "setSwiperHeight");
},
swiperChange(e) {
this.currentIndex = e.detail.current;
this.setSwiperHeight();
},
}
参考链接:
swiper自动获取高度的需求
uniapp中如何设置swiper的高度自适应的问题
链接中的nextTick无效,所有用了setTimeout代替