【发布时间】:2020-07-04 02:35:59
【问题描述】:
我在 VueJs 中有一个组件,例如 Player(或任何其他组件),用于播放音频和管理播放列表。
现在,当我更改播放列表而不更改路线时,我需要重新加载它。有没有办法重新加载组件或销毁它然后立即加载它?
我想在this组件播放音乐的时候改变它的播放列表,但有时它会播放上一个播放列表的音乐,我不知道为什么。
HTML 段:
<aplayer autoplay
ref="remote"
:music="music_list[0]"
:list="music_list"
:float="float"
:mutex="mutex"
repeat="list"
:mini="mini"
preload="auto"
@ended="onEnd"
@loadstart="playCMD"
@playing="onStart"
:listFolded="listFolded"
:controls="controls"
:muted.sync="muted"
:volume.sync="volume"
slot="display"
/>
JavaScript 段:
export default {
components: {
Aplayer
},
data: () => ({
float: false,
autoplay: true,
mutex: true,
muted: false,
volume: 0.8,
mini: false,
listFolded: false,
controls: true,
music_list: [..]
}),
methods: {
onEnd: function () {
// Doing a series of jobs that leads to raising an event then
this.music_list = [new music list after event trigger]
}
}
}
【问题讨论】:
-
为什么需要重新加载组件?如果您正确绑定数据,则不必重新加载整个内容。似乎是性能问题。 Vue 的反应系统应该能够获取您需要的所有更改(如果使用正确),而无需刷新任何内容。我认为this resource 拥有您正在寻找的一切
-
@EvanBechtol 非常感谢。因为我用于项目的组件有一些错误,当我更改路线时它可以正常工作。
-
没问题,这有时是 3rd-party 的缺点 ;) 链接资源对您有帮助吗?
-
@EvanBechtol 我想在this 组件播放音乐时更改播放列表,但有时它会播放上一个播放列表的音乐,我不知道为什么。
-
能否更新您的问题并附上相关代码?
标签: javascript vue.js vue-component vue-router quasar-framework