Hello I'm doing a dropdown in my website and I'm really new in Vue. I'm using conditional rendering for display some cards. Something like: Cars, Motos, Bikes. When i click on Cars there is a dropdown and i get a list of cars, same on others.
<h2 class="text-center my-font text-light"><button v-on:click="toggle = !toggle" class="badge badge-danger menu-label-size w-50">Cars</button></h2>
<div v-if="toggle" class="row">
<div class="col-12">
<div class="cards-item text-center ">
<div v-for="item in cars" ::key="item.id" class="card" style="width: 10rem;">
<img :src="'./images/cars/img' + item.img + '.png'" class="card-img-top img-fluid" alt="item.name">
<div class="card-body d-flex flex-column justify-content-end">
<h4 class="card-title my-font">{{ item.name }}</h4>
<p class="badge-danger font-weight-bold">{{ item.price }}</p>
</div>
</div>
</div>
</div>
</div>
<h2 class="text-center my-font text-light"><button v-on:click="toggle = !toggle" class="badge badge-danger menu-label-size w-50">Motos</button></h2>
<div v-if="toggle" class="row">
<div class="col-12">
<div class="cards-item text-center">
<div v-for="item in motos" ::key="item.id" class="card" style="width: 10rem;">
<img :src="'./images/motos/img' + item.img + '.png'" class="card-img-top img-fluid" alt="item.name">
<div class="card-body d-flex flex-column justify-content-end">
<h4 class="card-title my-font">{{ item.name }}</h4>
<p class="badge-danger font-weight-bold">{{ item.price }}</p>
</div>
</div>
</div>
</div>
</div>
<h2 class="text-center my-font text-light"><button v-on:click="toggle = !toggle" class="badge badge-danger menu-label-size w-50">Bikes</button></h2>
<div v-if="toggle" class="row">
<div class="col-12">
<div class="cards-item text-center">
<div v-for="item in bikes" ::key="item.id" class="card" style="width: 10rem;">
<img :src="'./images/bikes/img' + item.img + '.png'" class="card-img-top img-fluid" alt="item.name">
<div class="card-body d-flex flex-column justify-content-end">
<h4 class="card-title my-font">{{ item.name }}</h4>
<p class="badge-danger font-weight-bold">{{ item.price }}</p>
</div>
</div>
</div>
</div>
</div>
My script:
const app = new Vue({
el: '#app',
data: {
show: false,
cars: [{data}],
motos: [{data}],
bikes: [{data}],
},
})
But when i click on Motos it only closes Cars. How to make it dynamic? Like if i press Motos then it opens and Cars closes, same for Bikes
activeSelection = null;when you click on e.g. cars it will assigncarstoactiveSelectionvariable. and create if statement check to close / open lists this way:activeSelection === 'cars'- for cars. Use similar approach for other types. To save some bytes, you can create constants with numbers e.g. cars variable will be0, motos1, and use these constants to assignactiveSelectionvariable to existing constants and do a check using the same constants.