Я застрял в задаче, данной мне на Vue JS, и не знаю, что не так с этим кодом.
Задача генерирует динамическую c таблицу с фоном из 5 столбцов 4 цвета: красный, синий, желтый, зеленый. Когда l oop столбца дойдет до 5-го столбца, тогда на него следует поместить красный цвет фона, а следующая строка продолжится синим, желтым, зеленым, красным цветом.
new Vue({
el: '#app',
data: {
tableRows: ['Table Row 1'],
counter: 1,
bgColor: ['red', 'blue', 'yellow', 'green'],
fontSize: '30',
colNumber: 0,
maxColumn: 5,
},
computed: {
bgColorComputed: function() {
if (this.colNumber == 4) {
this.colNumber = 0;
return this.bgColor[this.colNumber];
}
return this.bgColor[this.colNumber];
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
<table border="1" width="500px" height="300px">
<tr v-for="(content, index) in tableRows">
<td v-for="colorIndex in maxColumn" :style="{ backgroundColor: bgColorComputed }">
bgColorComputed : {{ bgColorComputed }} <br> <br>
row count {{ counter }} <br>
column count {{ colNumber = colorIndex - 1 }}
</td>
</tr>
</table>
</div>
Вывод этого кода: красный, красный, синий, желтый, зеленый вместо красного, синего, желтого, зеленого, красного.
Почему красный цвет появляется два раза, а возвращаемый computedBgColor - красный, синий, желтый, зеленый?