uni-app踩坑:使用video组件,实现同一时间只允许一个视频播放,app端报错:pause is not a function

uni-app使用video组件,同一时间只允许一个视频播放
刚开始使用的方法:

<video class="myVideo" :src="item.videoUrl" 
:poster="$imgUrl + item.videoCoverImg" @play="playing(item.pgcId)"
 :ref="item.pgcId" controls></video>

			playing(e) {
				// 获取当前视频id
				let currentId = e;
				// 获取json对象并遍历, 停止非当前视频
				let trailer = this.video_list
				for (let i = 0; i < trailer.length; i++) {
					let temp = trailer[i].pgcId
					if (temp !== currentId) {
						console.log(this.$refs[temp])
						this.$refs[temp][0].pause();
					}
				}
			},

给video添加ref,使用refs来获取DOM元素,调用.pause()方法来关闭其他video
h5测试没有问题,但在app端测试时
报错:[Vue warn]: Error in v-on handler: “TypeError: this.$refs[temp][0].pause is not a function”

解决方法

<video class="myVideo" :src="item.videoUrl" 
:poster="$imgUrl + item.videoCoverImg" @play="playing(item.pgcId)" 
:id="item.pgcId" controls></video>

			playing(e) {
				let currentId =  e; // 获取当前视频id
				this.videoContent = uni.createVideoContext(currentId);
				let trailer = this.video_list;
				trailer.forEach(function(item, index) { // 获取json对象并遍历, 停止非当前视频
					if (item.videoUrl != null && item.videoUrl != "") {
						let temp = item.pgcId;
						if (temp != currentId) {
							uni.createVideoContext(temp).pause(); //暂停视频播放事件
						}
					}
				})
			},

使用uni.createVideoContext来操作video
官方文档
uni.createVideoContext(videoId, this)
创建并返回 video 上下文 videoContext 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内 组件。
h5和app都可以实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值