【发布时间】:2023-03-12 21:16:01
【问题描述】:
我正在尝试根据用户选择隐藏和显示表格列。但它没有按预期工作。这是codepen文件的链接。
https://codepen.io/nigel1995/pen/XWKbqoe?editors=1111
<div id="app">
<div v-for="item in columnHeaders">
<label>
<input type='checkbox' :value='item.value' v-model="selectedType"> {{ item.text }}
</label>
</div>
<table class="selection-div">
<tr>
<template v-for="item in columnHeaders">
<th v-if="showHeader(item)">{{ item.text }}</th>
</template>
</tr>
<tr v-for="desert in deserts">
<td v-if="!hideCol(desert)">{{ desert.name }}</td>
<td v-if="!hideCol(desert)">{{ desert.fat }}</td>
</tr>
</table>
</div>
new Vue({
el: '#app',
data: {
selectedType: [],
columnHeaders: [
{ text: 'Name', value: 'name', show: true },
{ text: 'Fat (g)', value: 'fat', show:true },
],
deserts: [
{
name: 'Frozen Yogurt',
fat: 6.0,
},
{
name: 'Golden Yogurt',
fat: 6.0,
},
{
name: 'Tasty Yogurt',
fat: 6.0,
}
]
},
methods: {
hideCol(row){
const t = Object.keys(row)[0];
return this.selectedType.includes(t);
},
showHeader(val){
return (val.show && !this.selectedType.includes(val.value));
}
},
});
我想要做的是动态显示表格列,而不是在每一列中检查它,因为表格标题将来会是动态的。任何方向将不胜感激。
【问题讨论】:
标签: javascript vue.js html-table vuejs2