uniapp view中多个video组件,如何保证永远只有一个视频在播放。,写代码
时间: 2024-06-03 07:08:58 浏览: 121
以下是Uniapp代码示例,使用computed计算属性实现多个video组件只有一个在播放:
<template>
<view>
<video
v-for="(item, index) in videos"
:key="index"
:src="item.src"
:autoplay="isPlaying(index)"
:controls="true"
@play="handlePlay(index)"
@pause="handlePause(index)"
></video>
</view>
</template>
<script>
export default {
data() {
return {
videos: [
{ src: 'video1.mp4' },
{ src: 'video2.mp4' },
{ src: 'video3.mp4' },
],
activeIndex: null,
}
},
computed: {
playingIndex() {
return this.activeIndex !== null ? this.activeIndex : -1
}
},
methods: {
handlePlay(index) {
this.activeIndex = index
},
handlePause(index) {
if (this.activeIndex === index) {
this.activeIndex = null
}
},
isPlaying(index) {
return this.playingIndex === index
}
}
}
</script>
上述代码中,首先定义了一个包含多个视频信息的videos数组,然后定义了一个activeIndex变量,用于记录当前正在播放的视频的索引。接着,使用computed计算属性playingIndex,如果activeIndex为null,则返回-1。然后,使用handlePlay和handlePause方法分别处理视频播放和暂停事件,如果当前播放的视频索引和传入的索引相同,则更新activeIndex为传入的索引,否则将activeIndex设置为null。最后,使用isPlaying方法判断当前视频是否在播放状态,如果是,则设置autoplay为true,否则为false。这样就实现了多个video组件只有一个在播放的效果。
阅读全文