vue.js - Vuetify v-dialog 在关闭时停止播放视频
问题描述
我有一个播放列表,可以播放音频和视频文件的组合。对于视频,我使用 v-dialog 来播放嵌入式 Youtube 或 Vimeo 播放器。我想做的是当我关闭视频停止播放的视频的 v 对话框时。有没有一种简单的方法可以强制视频停止播放?目前对话框关闭但视频声音仍在后台播放?
<v-list>
<v-list-item
v-for="media in media"
:key="media.id"
class="mb-2"
>
<v-list-item-content
class="pa-4"
>
<v-list-item-title
class="title"
v-text="media.title"
/>
</v-list-item-content>
<v-list-item-action>
<div>
<v-btn
icon
@click="pause"
>
<v-icon>pause</v-icon>
</v-btn>
<v-btn
v-else
icon
@click="play(media)"
>
<v-icon>play_arrow</v-icon>
</v-btn>
</div>
<div v-else>
<v-dialog
v-model="media.show"
persistent
width="800px"
:retain-focus="false"
>
<template v-slot:activator="{ on, attrs }">
<v-btn
icon
v-bind="attrs"
v-on="on"
>
<v-icon>mdi-open-in-new</v-icon>
</v-btn>
</template>
<v-card>
<Video
:video-url="media.url"
/>
</v-card>
<v-card-actions>
<v-spacer />
<v-btn
color="primary"
text
@click="media.show = false"
>
Close
</v-btn>
</v-card-actions>
</v-dialog>
</div>
</v-list-item-action>
</v-list-item>
</v-list>
..在下面我有一个包含音频和视频文件组合的媒体数组
media: [
{
id: 0,
title: 'Audio 1',
url: 'https://mcdn.podbean.com/abc.mp3',
},
{
id: 1,
title: 'Video 1',
show: false,
url: 'https://vimeo.com/347119375'
},
{
id: 2,
title: 'Audio 2',
url: url: 'https://mcdn.podbean.com/edf.mp3',
},
{
id: 3,
title: 'Audio 3',
url: 'url: 'https://mcdn.podbean.com/ghi.mp3'
},
{
id: 4,
title: 'Video 2',
show: false,
url: 'https://youtu.be/LtpGLNRlwA0'
}
],
解决方案
您的对话框也需要一个 v-if,如下所示:
<v-dialog
v-model="media.show"
v-if="media.show" <-------
persistent
width="800px"
:retain-focus="false"
>
v-if 如果元素为假,则从 DOM 中删除该元素。
推荐阅读
- swift - 应用程序中的 Alamofire 请求移至后台。连接丢失
- hyperledger-fabric - 一次运行所有命令会引发错误,而一个接一个运行命令是可以的
- css - 如何禁用模态的滚动条并在模态内部的自定义 div 上启用滚动条
- pyspark - 我们如何使用 osm 数据提取的 2 个 pyspark 数据帧创建线串?
- sql - 如何查看我的 COALESCE 语句的结果是从哪里检索到的?
- java - list.get(list.size() - 1) 可以缩短吗?例如 list.get(-1)
- php - Laravel 8 中 Route::filter 的替代方法是什么?
- babeljs - nuxtjs client_side 问题 Firefox 34 等旧浏览器
- android - 小部件未按预期更新
- c - 将结构作为参数的奇怪错误