vue3中一个组件内有多个ElNotification通知怎么确定在最后一个通知结束后执行audio.pause();
时间: 2024-03-16 07:44:01 浏览: 275
在 Vue 3 中,可以通过监听 `ElNotification` 组件的 `close` 事件,来判断最后一个通知是否已经关闭,然后才执行 `audio.pause()` 方法。具体做法如下:
1. 在模板中给每个 `ElNotification` 组件设置一个唯一的 `id` 属性,可以使用 `v-for` 循环生成多个组件,每个组件的 `id` 属性可以设置为循环变量。
```html
<template>
<div>
<el-notification v-for="(item, index) in notifications" :key="index" :id="'notification-' + index">
{{ item.message }}
</el-notification>
</div>
</template>
```
2. 在组件的 `created` 生命周期中监听 `ElNotification` 组件的 `close` 事件,并记录关闭的组件的 `id`。
```js
<script>
export default {
data() {
return {
notifications: [
{ message: 'Notification 1' },
{ message: 'Notification 2' },
{ message: 'Notification 3' }
],
lastClosedId: null,
audio: new Audio('path/to/audio.mp3')
};
},
created() {
this.$nextTick(() => {
this.$el.querySelectorAll('.el-notification').forEach((el) => {
el.addEventListener('close', () => {
this.lastClosedId = el.id;
if (this.lastClosedId === 'notification-' + (this.notifications.length - 1)) {
this.audio.pause();
}
});
});
});
}
};
</script>
```
3. 在 `close` 事件的回调函数中,判断最后关闭的组件的 `id` 是否等于最后一个通知的 `id`,如果是,则执行 `audio.pause()` 方法。
这样,在最后一个通知关闭后,就会执行 `audio.pause()` 方法,停止播放音频。
阅读全文