Vue.js 检查v-dialog是否打开并停止音频播放

Vue.js 检查v-dialog是否打开并停止音频播放,vue.js,vuetify.js,Vue.js,Vuetify.js,我想在v-dialog上有一个监视程序,在对话框打开时停止播放音频文件。通常我会让v-model=“dialogVisible”然后添加一块手表。但是由于我有多个对话框,所以我不得不使用v-model=“media.show”作为对话框 this.audioPlayer.pause() this.isPlaying = false 我现在如何检查对话框何时打开,然后将上述设置设置为在对话框打开时阻止播放音频文件 <v-list-item-action>

我想在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>

暂停
弹箭
mdi在纽约开放
接近
您所能做的就是为一个客户服务。在您的情况下,
media.show
。当它改变时,会触发对话框显示。所以,当你观看道具改变时,你可以触发一个你可以做任何事情的函数。在这种情况下,当该值变为真时,我们将暂停音乐,然后将其恢复为假

观察:{
媒体:{
深:是的,
处理程序(newVal){
//显示模态
如果(newval.show){
this.audioPlayer.pause()
this.isplay=false
}否则{
//模式关闭时恢复(可选)(
这个.audioPlayer.play();
this.isplay=false;
}
}
}
}

谢谢。我确实尝试过,但当v-dialog打开时,这似乎不会触发。Hello,我更新了我的答案,以更可靠的方式处理对象的属性。有时,我之前详述的字符串语法无法正常工作。现在使用
deep:true
应该可以正常工作。同时检查consoles的错误。如果有任何让我知道他们是什么,我可以帮助调试,并得到你的答案,工作