【发布时间】:2020-05-02 18:10:24
【问题描述】:
我正在使用 Bootstrap Vue 并希望动态添加一列或仅在数据中满足某些条件时才显示该列。我试图了解作用域插槽以及这是否是我应该使用格式化程序回调函数的方向。理想情况下,我只想添加一列“版本 2”,前提是它在数据中可用。我不知道从哪里开始。
代码
<b-table striped responsive hover :items="episodes" :fields="fields" :filter="filter">
<template v-slot:cell(version_1)="data">
<a :href="`${data.value.replace(/[^a-z]-/i,'-').toLowerCase()}`">Definition</a>
</template>
</b-table>
</template>
<script>
data() {
return {
fields: [{
key: 'category',
sortable: true
},
{
key: 'episode_name',
sortable: true
},
{
key: 'episode_acronym',
sortable: true
},
{
key: 'version_1',
sortable: true
}
],
episodes: [],
versions: [],
}
},
mounted() {
return Promise.all([
// fetch the owner of the blog
client.getEntries({
content_type: 'entryEpisodeDefinitions',
select: 'fields.title,fields.category,fields.slug,fields.episodeAcronym,fields.version,sys.id'
})
])
.then(response => {
// console.info(response[0].items);
return response[0].items
})
.then((response) => {
this.episodes = response.reduce(function( result, item){
if ( item.fields.version === 1 ) {
return result.concat({
category: item.fields.category,
episode_name: item.fields.title,
episode_acronym: item.fields.episodeAcronym,
version_1: 'episodes/' + item.fields.slug + '/' + item.sys.id,
})
}
return result
}, [])
this.versions = response.reduce(function( result, item){
if ( item.fields.version === 2 ) {
return result.concat({
version_2: 'episodes/' + item.fields.slug + '/' + item.sys.id,
})
}
return result
}, [])
console.info(response);
})
.catch(console.error)
},
</script>
【问题讨论】:
-
不值得完整回答,但请read the documentation。
-
只是为了澄清。例如,如果没有单个数据具有 version_2。你想隐藏列 version_2
-
使用计算属性过滤掉传递给
<b-table>的fields定义数组中的字段。fields数组中没有出现的字段将不会显示, -
@Evan 是的,正确。
标签: javascript vue.js bootstrap-vue