我目前正在尝试使用Bootstrap-Vue表(https://bootstrap-vue.js.org/docs/components/table)动态显示/隐藏。
到目前为止,我只设法隐藏了标题,但单元格不会消失,这是一个问题,因为单元格不在良好标题的前面(数字应在天数以下,并且应包含“成分”应该在项目下。
这是“有效的”方法:
table2
我想知道是否有可能在vueJS之外做到这一点,并直接使用CSS更改列的属性。
感谢您的帮助!
路易
答案 0 :(得分:4)
您可以在字段中添加其他属性。例如,visible
并创建一个计算属性,该属性会过滤出visible: false
的所有字段。
这样,您只需切换此属性即可显示/隐藏列。
window.onload = () => {
new Vue({
el: '#app',
computed: {
visibleFields() {
return this.fields.filter(field => field.visible)
}
},
data() {
return {
items: [
{ id: 1, first: 'Mike', last: 'Kristensen', age: 16 },
{ id: 2, first: 'Peter', last: 'Madsen', age: 52 },
{ id: 3, first: 'Mads', last: 'Mikkelsen', age: 76 },
{ id: 4, first: 'Mikkel', last: 'Hansen', age: 34 },
],
fields: [
{ key: 'id', label: 'ID', visible: true },
{ key: 'first', label: 'First Name', visible: true },
{ key: 'last', label: 'Last Name', visible: true },
{ key: 'age', label: 'Age', visible: true },
]
}
}
})
}
<link href="https://unpkg.com/bootstrap@4.4.1/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://unpkg.com/bootstrap-vue@2.2.2/dist/bootstrap-vue.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@2.2.2/dist/bootstrap-vue.min.js"></script>
<div id='app'>
<b-checkbox
:disabled="visibleFields.length == 1 && field.visible"
v-for="field in fields"
:key="field.key"
v-model="field.visible"
inline
>
{{ field.label }}
</b-checkbox>
<br /><br />
<b-table :items="items" :fields="visibleFields" bordered>
</b-table>
</div>