Вы не должны манипулировать DOM вручную подобным образом, потому что Vue просто переопределит его во время следующего обновления (при условии, что Vue не будет смущен этими изменениями).
Это не ' Кажется, есть какая-то причина, почему эти карты должны быть жестко закодированы в шаблоне. Вы должны определить данные для этих карт в массиве, который вы определили в данных компонента, затем обработать их, используя v-for
, тогда все, что вам нужно сделать, это перемешать массив .
Вот демо:
// This is an in-place array shuffle function which is
// compatible with arrays observed by Vue
function shuffleVueArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const temp = array[i];
Vue.set(array, i, array[j]);
Vue.set(array, j, temp);
}
}
new Vue({
el: '#app',
data: {
items: [
'apple',
'banana',
'orange',
'pear',
'pineapple',
'mango',
],
},
methods: {
randomize() {
shuffleVueArray(this.items);
},
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<button @click="randomize">Randomize</button>
<ul>
<li v-for="item of items">{{ item }}</li>
</ul>
</div>