<template>
<div>
<ul>
<li v-for="item in li" @click="active = item">{{item}}</li>
</ul>
<table>
<tr v-for="item in items" v-if="item.action == active || active == 'all'">
<td>{{item.id}}</td>
<td>{{item.action}}</td>
</tr>
</table>
</div>
</template>
<script>
export default {
name: "test",
data() {
return {
active: 'all',
li: ['all', '', ''],
items:[
{
id:'A2345',
action:''
},
{
id:'B638',
action:''
},
{
id:'C863',
action:''
}]
}
}
}
</script>
<style lang="stylus" scoped>
</style>
<table>
<tr v-for="(item,index) in items" :key="index" v-if="item.action==''">
<td>{{item.id}}</td>
<td>{{item.action}}</td>
</tr>
</table>
can be implemented in many ways by referring to the following code. It is suggested that the landlord read more documents, and this problem will be solved naturally.
<div class="hello">
<ul>
<li @click="select('all')">all</li>
<li @click="select('unactive')"></li>
<li @click="select('active')"></li>
...
</ul>
<table>
<tr v-for="(item, index) in items" :key="index" v-if="currentType !== item.action">
<td>{{item.id}}</td>
<td>{{item.action}}</td>
</tr>
</table>
</div>
data() {
return {
items:[
{
id:'A2345',
action:''
},
{
id:'B638',
action:''
},
{
id:'C863',
action:''
}],
currentType: 'all'
}
},
methods: {
select(type) {
if (type === 'all') {
this.currentType = ''
} else if (type === 'active') {
this.currentType = ''
} ...
}
}
use computed to Filter items
template
<ul>
<li @click="action=''">all</li>
<li @click="action=''"></li>
<li @click="action=''"></li>
</ul>
<table>
<tr v-for="item in filterItems">
<td>{{item.id}}</td>
<td>{{item.action}}</td>
</tr>
</table>
script
data() {
return {
action: ''
}
},
computed() {
filterItems() {
return this.items.filter(item => item.action.includes(this.action)
}
}
})
pseudocode makes do.