我有一个对象数组,其中每个对象都有一个textValue、一个active、info等。我遍历了这个排列,并为每个元素显示按钮。我为里面的每个按钮添加了一个div,在3个段落中,我尝试添加类,并根据每个按钮的条件显示一些段落。我为按钮添加了一个事件,并传递了一个id。这样我就把active设置为true并显示信息,这是针对每个不同的id的。2点击一个按钮会产生一个active类并显示一个数量,点击按钮本身或按钮外部会消除类和数量(p),当我单击按钮时,信息打开,这里有一个按钮,单击时,包含信息的div隐藏(我已经这样做了),我想保持类可见,段落可见,我用条件,但我不能做到这一点,这是代码:
<button
v-for="filter in addedFilters"
:key="filter"
:value="filter.textValue"
@click="(e) => {openInfoFiltro(filter, e)}"
:class="{'filter-active': filter.active && !optionButtonValue.includes(filter.textValue), 'active-filter-options': filter.active && optionButtonValue.includes(filter.textValue)}">
<div>
<p v-if="filter.active && filter.textValue !== 'Uso de suelo' && filter.textValue !== 'Amenidades' && filter.textValue !== 'Clasificación de la tierra' & filter.textValue !== 'Vocaciones'" class="m-0">
{{ $filters.numeralFormatBtnInfo(filter.info[0]) }} - {{$filters.numeralFormatBtnInfo(filter.info[1]) }}
</p>
<p v-else-if="filter.active || filter.textValue === 'Uso de suelo' && filter.textValue === 'Amenidades' && filter.textValue === 'Clasificación de la tierra' && filter.textValue === 'Vocaciones'" class="m-0 amount">
<span v-if="filter.info">({{filter.info === 0 ? '' : filter.info }})</span>
</p>
<p class="m-0">{{filter.textValue}}</p>
</div>
</button>
函数,当单击按钮并将对象的活动设置为true时
const openInfoFiltro = (id,e) => {
selectedFilter.value = addedFilters.value.find(val => val.textValue === id.textValue);
console.log(selectedFilter.value)
if(selectedFilter.value){
selectedFilter.value.active = !selectedFilter.value.active
}
}
数组,其中i具有不同的文本值
const optionButtonValue = ['Uso de suelo', 'Amenidades', 'Clasificación de la tierra', 'Vocaciones' ]
在另一个组件中,我执行了provide和reject ref,在这里我传递了选定的筛选器(selectedFilter),这里我有一个函数,当单击该函数时,我希望按钮保持活动状态,并根据optionButtonValue显示一个段落或另一个段落,但使其保持活动状态,在这里我将active传递给false以隐藏每个按钮的信息
const showResults = () => {
console.log('Mostrar resultados')
landsStore.lands = []
landsStore.landsadd = []
selectedFilter.value.active = false
landsStore.fetchLands('', { filters: filtersStore.getAllFiltersAlgoliaFormat, facetFilters: filtersStore.getAllFacetFilterFormat })
}
1条答案
按热度按时间2lpgd9681#
实际上,v-if只等待true和false。但是你在v-if文本定义中使用了。这是不正确的。首先,你只能有条件地改变v-if,比如v-if="{filter.active||filter}“同样在你的p标签中你可以直接输入定义更改文本{{ filter.active && 'bla bla' }}