Я хочу создать аудиоэлемент, который будет использоваться для воспроизведения всех аудио-URL, которые у меня есть на всех маршрутах, я думаю, что это полезный подход для SPA (я прав?). Поэтому я решил объявить новый Audio в состоянии vuex, которое я могу легко использовать и обновлять, просто изменив свойство sr c аудиообъекта. И это работает, но проблема возникает, когда я хочу получить свойства этого аудиообъекта, такие как currentTime и длительность для построения индикатора выполнения звука, и он не реагирует. Как решить эту проблему?
const state = {
audio: false,
object: new Audio()
}
// getters
const getters = {
audio: state => state.audio,
percentage: state => (isNaN(Math.round((state.object.currentTime / state.object.duration) * 100))) ? 0 : Math.round((state.object.currentTime / state.object.duration) * 100)
}
// actions
const actions = {
playAudio ({ commit, state }, previewUrl) {
commit('play_audio', previewUrl)
},
stopAudio ({ commit, state }) {
commit('stop_audio')
}
}
// mutations
const mutations = {
play_audio (state, previewUrl) {
state.object.pause()
state.object.currentTime = 0.0
state.object.src = previewUrl
state.object.play()
state.audio = {
preview_url: previewUrl
}
},
stop_audio (state) {
state.object.pause()
state.object.currentTime = 0.0
state.src = ''
state.audio = false
}
}
export default {
namespaced: true,
state,
getters,
actions,
mutations
}