Уже 8 часов пытаюсь заставить это работать, но все равно не повезло. В конечном итоге я пытаюсь напечатать цикл, который показывает все элементы по умолчанию. Затем, когда пользователь выбирает флажок, он отфильтровывает те элементы, для которых ему присвоено значение false.
У меня есть следующая группа флажков и цикл:
<div class="container" id="clubs">
<div class="filter">
<label><input type="checkbox" v-model="selectedCategory" value="All" /> All</label>
<label><input type="checkbox" v-model="selectedCategory" value="ClubParking" /> Parking</label>
<label><input type="checkbox" v-model="selectedCategory" value="ClubToilets" /> Toilets</label>
<label><input type="checkbox" v-model="selectedCategory" value="ClubFloodlights" /> Floodlights</label>
</div>
<ul class="clubs-list">
<li v-for="club in filteredClubs">{{ club.clubName }}</li>
</ul>
</div>
Тогда в моем приложении у меня есть следующий код
var vm = new Vue({
el: "#clubs",
data: {
clubs: [
{ clubName: "Club One", clubParking: true, clubToilets: false, clubFloodlights: true },
{ clubName: "Club Two", clubParking: true, clubToilets: false, clubFloodlights: false },
{ clubName: "Club Three", clubParking: false, clubToilets: true, clubFloodlights: true },
],
selectedCategory: "All"
},
computed: {
filteredClubs: function() {
var vm = this;
var category = vm.selectedCategory;
if(category === "All") {
return vm.clubs;
} else {
return vm.clubs.filter(function(club) {
return selectedFieldNames.every(fname=>club[fname])
const selectedFieldNames = selectedCategory.map(category=>{
switch(category){
case 'Toilets':
return 'clubToilets';
case 'Parking':
return 'clubParking';
case 'Floodlights':
return 'clubFloodlights';
}
})
});
}
}
}
});
Я даже сделал Codepen Я лучше с рабочим модалом, чем могу вернуться, чтобы понять, почему я ошибаюсь. Любая помощь приветствуется, так как я не выходила из дома весь день, пытаясь заставить его работать.