【发布时间】:2022-01-12 11:43:25
【问题描述】:
我有一个对象数组作为数据,我希望有几个选择菜单来过滤数据并以反应方式将其显示在屏幕上。 我已经设法让一个过滤器工作,但这里的想法是能够链接过滤器,以便可以通过选择值的任意组合过滤结果。
我已将我的代码分解为下面的一个极简示例:
<template>
<div class="mp" style="width: 100vw;">
<div class="col-2">
<span class="lbl">FILTER1</span>
<select v-model="selectedMA" class="form-select" >
<option value="">all</option>
<option value="Germany">Germany</option>
</select>
</div>
<div class="col-2">
<span class="lbl">FILTER2</span>
<select v-model="selectedMA2" class="form-select" >
<option value="">all</option>
<option value="Tier1">Tier1</option>
</select>
</div>
<p>DATA :</p>
<p> {{actorListTest2}} </p>
</div>
</template>
<script >
import {onMounted, onBeforeMount, ref, computed, watch} from 'vue'
import getActorDocs from '../composables/getActorDocs'
export default {
setup(){
const {actorDocs, loadActors} = getActorDocs()
const selectedMA = ref("all")
const selectedMA2 = ref("all")
loadActors(); // load data
var filteredActors = actorDocs
const actorListTest2 = computed(() => {
if(selectedMA.value == "all" && selectedMA2.value == "all"){return filteredActors}
else{
return filteredActors.filter(obj => {
return obj.country == selectedMA.value
}).filter(obj => {
return obj.type == selectedMA2.value
})}
});
return {filteredActors, actorListTest2, selectedMA, selectedMA2, actorDocs}
}//setup
}
</script>
<style scoped>
</style>
【问题讨论】:
标签: vue.js filtering vuejs3 vue-composition-api