У меня странная проблема с тем, что VueJS не устанавливает класс для элемента в цикле v-for при первой загрузке страницы. Он работает после того, как я нажимаю на него, чтобы включать и выключать выбранный атрибут, но когда выбрано изначально истинно, строка не выделяется. Таким образом, для «синхронизации» экрана с данными требуется 2 клика.
<tbody>
<tr v-for="v in listOfItems" :key="v.id" :class="{ selected: v.selected }" v-on:click="function(){ itemSelected(v) }">
<td style="text-align:right"><span v-text="v.selected"></span></td>
<td style="text-align:right"><span v-text="v.label"></span></td>
</tr>
</tbody>
function itemSelected(row) {
row.selected = !row.selected
app.$nextTick(function() {
console.log( $('tr.selected').length )
})
return false
}
Массив изначально загружается перед отображением экрана с помощью:
app.listOfItems = [{
id: 100,
label: 'Item 100',
selected: true
}]
Все остальные данные отображаются корректно, и даже выбранные в ячейке таблицы отображаются верно. Только «выбранный» класс не применяется изначально, пока я не щелкну дважды (один раз, чтобы отменить выбор, и еще раз, чтобы повторно выбрать).
v-on:click="v.selected = !v.selected"
? - person Bert   schedule 18.01.2018listOfItems
? - person PatrickSteele   schedule 18.01.2018