检查 v-dialog 是否打开并停止音频播放
Check if v-dialog is open and stop audio playing
我希望 v-dialog 上有一个观察器,可以在对话框打开时停止播放音频文件。通常我会有 v-model="dialogVisible" 然后添加一个手表。但由于我有多个对话框,我不得不为对话框使用 v-model="media.show"。
this.audioPlayer.pause()
this.isPlaying = false
我现在如何检查对话框何时打开,然后设置以上内容以防止在对话框打开时播放音频文件?
<v-list-item-action>
<div v-if="media.url.includes('mp3')">
<v-btn
v-if="isPlaying && (currentMedia.id === media.id)"
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
v-if="media.show"
: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>
你能做的是watch for a 。在你的情况下 media.show
。当它改变时,这会触发您的对话框显示。所以当你看到那个道具发生变化时,你可以触发一个你可以做任何事情的功能。在这种情况下,我们将在值变为真时暂停音乐并恢复它变为假。
watch: {
media: {
deep: true,
handler(newVal) {
//Modal is displayed
if (newval.show) {
this.audioPlayer.pause()
this.isPlaying = false
} else {
//Resume when modal is closed (optional(
this.audioPlayer.play();
this.isPlaying = false;
}
}
}
}
我希望 v-dialog 上有一个观察器,可以在对话框打开时停止播放音频文件。通常我会有 v-model="dialogVisible" 然后添加一个手表。但由于我有多个对话框,我不得不为对话框使用 v-model="media.show"。
this.audioPlayer.pause()
this.isPlaying = false
我现在如何检查对话框何时打开,然后设置以上内容以防止在对话框打开时播放音频文件?
<v-list-item-action>
<div v-if="media.url.includes('mp3')">
<v-btn
v-if="isPlaying && (currentMedia.id === media.id)"
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
v-if="media.show"
: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>
你能做的是watch for a media.show
。当它改变时,这会触发您的对话框显示。所以当你看到那个道具发生变化时,你可以触发一个你可以做任何事情的功能。在这种情况下,我们将在值变为真时暂停音乐并恢复它变为假。
watch: {
media: {
deep: true,
handler(newVal) {
//Modal is displayed
if (newval.show) {
this.audioPlayer.pause()
this.isPlaying = false
} else {
//Resume when modal is closed (optional(
this.audioPlayer.play();
this.isPlaying = false;
}
}
}
}