【发布时间】:2020-09-19 12:47:15
【问题描述】:
我想在 vuejs 中基于多项选择显示/隐藏一些元素,目前,我正在使用方法,我很想知道有没有更好的方法来做到这一点?像计算属性?以及如何做到这一点?
代码沙箱示例:
https://codesandbox.io/s/dynamic-filter-bp72r?file=/src/pages/Index.vue
<q-select
filled
outlined
dense
multiple
options-dense
v-model="groupBy.fields"
:options="reporterlocationGroupByFileldOptions"
label="fields"
emit-value
map-options
option-value="value"
option-label="name"
color="orange"
/>
<!-- elements to show/hide -->
<q-select
v-if="visibleFilter('province')"
filled
outlined
dense
options-dense
v-model="filtering.provinceId"
:options="provinceOptions"
label="province"
emit-value
map-options
option-value="id"
option-label="name"
class="q-my-sm"
color="red"
/>
<q-select
v-if="visibleFilter('city')"
filled
outlined
dense
options-dense
v-model="filtering.cityId"
:options="cityOptions"
label="city"
emit-value
map-options
option-value="id"
option-label="name"
class="q-my-sm"
color="green"
/>
我目前使用方法的解决方案:
data() {
return {
filtering: {
provinceId: '',
cityId: ''
},
reporterlocationGroupByFileldOptions: [
{ name: 'province', orderByDesc: 'province', value: 'province' },
{ name: 'city', orderByDesc: 'city', value: 'city' }
]
}
},
methods: {
visibleFilter(filterName) {
var field = this.groupBy.fields.find(x => x === filterName)
if (field) return true
return false
}
}
【问题讨论】:
-
请在问题中添加一些相关代码以创建minimal reproducible example。通过查看代码足以理解问题。如果外部链接被删除或无法访问,这个问题将没有未来价值
标签: javascript vue.js