Причина, по которой ваши изменения не принимаются, заключается в том, что вы (или компонент игрока) неправильно используете систему реактивности Vue. Вы должны использовать соответствующий метод мутации массива , чтобы реактивность массива поддерживалась. Vue не будет воспринимать изменения, сделанные непосредственно для элементов массива .
Значение, когда вы делаете что-то вроде:
this.myArray[1] = "some new value";
Эти изменения не будет выбран Vue.
Правильный способ манипулировать массивом в Vue
Используя ваш метод onEnd
, попробуйте изменить код на этот. ...
onEnd: function () {
// Assumption: resultOfSomeJob is an array of songs for the playlist
// Clear our playlist
this.music_list = [];
// Push elements to our music_list using the Vue array method "push"
this.music_list.push(...resultOfSomeJob);
}
Редактировать:
Я посмотрел код компонента aplayer
. Причина, по которой мой ответ работает, состоит в том, что он берет :list
, который вы ему даете, и вычисляет новое свойство , musicList
.
(Вот код на случай, если он изменится в будущем)
musicList () {
return this.list
}
Я нашел этот отрывок из Vue документов очень полезно понять, что здесь происходит ...
вычисленные свойства кэшируются на основе их реактивных зависимостей. Вычисленное свойство будет переоцениваться только при изменении некоторых его реактивных зависимостей.
Итак, когда вы изменяете свой массив без использования надлежащих методов для поддержания реактивности, а затем передаются в a-player
компонент, вычисляемое свойство не обновляется . Таким образом, ваш старый плейлист остается:)