vue.js - 根据存储获取器有条件地显示/隐藏 b 表列
问题描述
我想根据用户是否为管理员来显示/隐藏表列“ first_name ” 。
这是我的桌子:
<b-table
striped
hover
small
stacked="sm"
selectable
select-mode="single"
show-empty
:items="allProducts"
:fields="productsFieldsForBTable"
:busy="isLoading"
primary-key="id"
>
<template slot="actions" slot-scope="data">
<select v-model="data.selected">
<option v-for="user in users" :key="user.id" :value="user.id">{{user.first_name}}</option>
</select>
</template>
</b-table>
这是store getter 中的productsFieldsForBTable。
productsFieldsForBTable: () => {
return [
{
key: 'product_name',
sortable: true,
},
{
key: 'buying_price',
sortable: true,
},
{
key: 'notes',
sortable: true,
},
{
key: 'first_name',
label: 'User',
sortable: true,
},
// A virtual column for additional action buttons
{ key: 'actions', label: 'Actions' }
]
}
store getter 有 isAdmin 标志,将用于隐藏/显示列
我不确定要使用什么语法以及在哪里检查条件?(在 b-table 标记中还是在计算中?)
更新 -
如何从商店本身访问 isAdmin 值?它在吸气剂中,如下所示:
getters: { isAdmin: (state, getters) => { return getters.isLoggedIn && state.user.role === 'Admin' }, ....
if(getter.isAdmin){ // how to access getters' isAdmin here? // this.$store.getters.isAdmin is not working here.
fields.push({
key: 'first_name',
label: 'User',
sortable: true
})
}
解决方案
您可以使用 Vuex 中的 mapGetters 并将productFieldsForBTable
其作为计算属性映射到您的组件。然后在你的吸气剂中,而不是在行中返回一个数组,做这样的事情:
productsFieldsForBTable: (state, getters) => {
var fields = [
{
key: 'product_name',
sortable: true,
},
{
key: 'buying_price',
sortable: true,
},
{
key: 'notes',
sortable: true,
},
{
key: 'first_name',
label: 'User',
sortable: true,
},
// A virtual column for additional action buttons
{ key: 'actions', label: 'Actions' }
]
if(getters.isAdmin){
fields.push({
key: 'admin_field',
sortable: true,
})
}
return fields
}
如果您不希望表末尾的管理字段,您总是可以使用splice
函数而不是push
. 像下面这样的东西会将管理项放在操作之前:
var index = 4 // index you want to insert the new column at
fields.splice(index, 0, { key: 'admin_field', sortable: true })
推荐阅读
- javascript - 选择下拉列表中 insertAfter() 的奇怪行为。在页面加载时,它正在插入多个 div
- java - 如何从 org.eclipse.ui.ide.projectNatureImages 获取更多 IExtensions?
- python - 在 python 2.7 中引入了使用张量流的新激活函数
- bokeh - 散景 python 回调以突出显示选择/重新制作数据源
- javascript - 使用 .sort((a,b) => a>b) 对数组进行排序有效。为什么?
- php - 在 Woocommerce 3 中自定义添加到购物车消息
- r - R partykit ctree 抱怨“休息不是唯一的”
- javascript - 如何避免 JavaScript 中的函数循环依赖?
- javascript - 使用jquery暂停css动画不起作用
- dynamics-crm - 在 CRM Online 9.0 中创建仅供特定团队或区域访问的视图