渲染3个 swiper-item 实现短视频效果。
mumu模拟器(APP):动态修改 circular 属性为 true 后 @change 事件会同时触发两次,然后 swiper无法继续向后滑动。
栗子荔枝
- 发布:2024-03-12 13:19
- 更新:2024-03-13 17:36
- 阅读:400
3 个回复
栗子荔枝 (作者) - 暂无介绍
还有个问题,在浏览器下向前返回第一个 swiper-item 修改 circular 属性为 false 时,会导致第一个和第三个 swiper-item 重叠在一起。
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
我刚试了下没能复现
可以贴下你的代码看看
栗子荔枝 (作者)
<script>
let that;
// import flvModeule from "../../components/flvModule/flvModule.vue";
export default {
// components: {
// flvModeule
// },
data() {
return {
originList: [], // 源数据
displaySwiperList: [], // swiper需要的数据
displayIndex: 0, // 用于显示swiper的真正的下标数值只有:0,1,2。
originIndex: 0, // 记录源数据的下标
current: 0,
isFirstLoad: true, //是否首次加载
circular: false, //是否衔接滚动
isData: true, //是否还有数据
idxKey: null, //当前视频id
</script>
<template>
<view>
<swiper class="swiper-box" :style="'height:'+windowHeight+'px;'" :current="current" :circular="circular"
@change="swiperChange" :vertical="true" duration="300">
<swiper-item v-for="(item, index) in displaySwiperList" :key="item.id">
<text style="color: #fff;font-size: 40px;">{{item.id}} , {{id}}</text>
<!-- <block v-if="item.id === id">
<flvModeule :item="item" :idxKey="id" :windowWidth="windowWidth" :windowHeight="windowHeight" />
</block>
<view :style="'width:'+windowWidth+'px;height:'+windowHeight+'px;'" v-else>
<image :style="'width:'+windowWidth+'px;height:'+windowHeight+'px;'" :src="item.coverImg" />
</view> -->
</swiper-item>
</swiper>
</view>
</template>
<style lang="less">
.swiper-box {
background-color: #000;
}
</style>
2024-03-12 13:58
套马杆的套子
回复 栗子荔枝: 我试了你的代码,在that.circular = true;后,没出现@change触发两次的情况啊,
2024-03-12 14:21
栗子荔枝 (作者)
回复 套马杆的套子: 是nvue文件吗,然后使用mumu模拟器运行安卓基座
2024-03-12 14:26
栗子荔枝 (作者) - 暂无介绍
问题找到了,只要 if (e.detail.source == 'autoplay') return; 就好了