[英]Toggle custom audio play/pause button inside v-for
在我的 vue 應用程序中,我有一個音頻列表,我創建了一個自定義音頻播放/暫停按鈕,
看起來像這樣
<div v-for="(post, p) in post_list">
...
...
...
<v-avatar v-if="!is_played" color="#663399" size="42" class="mx-2"
@click="playMe('custom-wave-aud-'+p)">
<v-icon dark> mdi-play </v-icon>
</v-avatar>
<v-avatar v-if="is_played" color="#663399" size="42" class="mx-2"
@click="pauseMe('custom-wave-aud-'+p)">
<v-icon dark> mdi-pause </v-icon>
</v-avatar>
</div>
function 看起來像這樣:
playMe(c) {
document.getElementsByClassName(c)[0].play();
this.is_played = true;
},
pauseMe(c) {
document.getElementsByClassName(c)[0].pause();
this.is_played = false;
},
但是所有音頻的所有播放/暫停按鈕也都被切換,我只希望播放音頻的按鈕應該被切換。
任何想法?
您應該將 v-for 中的代碼拆分為一個名為avatar-item
的新組件,例如:
<div v-for="(post, p) in post_list">
...
...
...
<avatar-item></avatar-item>
</div>
然后你的avatar-item
組件將如下所示:
<template>
<div>
<v-avatar v-if="!is_played" color="#663399" size="42" class="mx-2"
@click="playMe('custom-wave-aud-'+p)">
<v-icon dark> mdi-play </v-icon>
</v-avatar>
<v-avatar v-if="is_played" color="#663399" size="42" class="mx-2"
@click="pauseMe('custom-wave-aud-'+p)">
<v-icon dark> mdi-pause </v-icon>
</v-avatar>
</div>
</template>
將變量is_played
移動到此組件以及您的其他函數中:
<script>
export default {
data() {
return {
is_played: false,
}
},
methods: {
playMe(c) {
document.getElementsByClassName(c)[0].play();
this.is_played = true;
},
pauseMe(c) {
document.getElementsByClassName(c)[0].pause();
this.is_played = false;
},
}
}
</script>
這樣,每個組件都會有一個獨立的is_played
變量,因此應該獨立切換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.