J'ai un v-for pour afficher toutes mes catégories. Je voudrais exclure une catégorie, cette catégorie a un id = 1. Alors, comment puis-je supprimer par Id? ou peut-être comment puis-je exclure le premier élément du tableau? que fais-je ?
<div class="list" v-for="(category,index ) in Categories" :key="category.id">
3 Réponses :
Vous pouvez utiliser v-if .
<div class="list" v-for="(category,index ) in Categories" :key="category.id">
<template v-if="category.id === 1">
...
vous ne pouvez pas utiliser v-if avec v-for dans un div, vous pouvez utiliser <template> à la place <div>
Je ne comprends pas vraiment ce que tu veux dire ... désolé, je suis très nouveau dans ce domaine. où dois-je ajouter le v-if? <div class = "list" v-for = "(category, index) in Categories": key = "category.id">
pouvez-vous mettre à jour toute votre base de code dans votre question?
Utilisez l'option de composant de propriété calculée.
computed: {
filteredCategories: function(){
//example ids to ignore
var ignore = [1, 10];
return this.categories.filter(cat => ignore.indexOf(cat.id) === -1);
}
}
<div class="list" v-for="(category,index ) in filteredCategories" :key="category.id">
Pour obtenir toutes les catégories avec un id supérieur à 1, le moyen le plus simple serait d'avoir un filteredCategories calculé:
data: () => ({
Categories: []
}),
computed: {
filteredCategories() {
return this.Categories.filter(cat => cat.id > 1);
}
},
mounted() {
axios.get("path/to/your/api")
.then(response => this.Categories = response.data);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.js"></script>
<div id="app">
<div class="list" v-for="category in filteredCategories" :key="category.id">
{{category.id}} - {{ category.name }}
</div>
</div>Vue.config.devtools = false;
Vue.config.productionTip = false;
new Vue({
el: '#app',
data: () => ({
Categories: [
{id: 1, name: 'I won\'t get rendered!'},
{id: 2, name: 'Second category'},
{id: 3, name: 'Third category'},
{id: 4, name: 'Fourth category'},
{id: 0, name: 'I won\'t get rendered, either. My id is `0`'}
]
}),
computed: {
filteredCategories() {
return this.Categories.filter(cat => cat.id > 1);
}
}
})computed: {
filteredCategories: {
return this.Categories.filter(cat => cat.id > 1);
}
}
Les avantages sont:
Categories initial n'est pas muté, donc si vous l'utilisez n'importe où ailleurs dans le composant, il contiendra toujours toutes les catégories (ce qui n'est pas vrai si vous filtrez en utilisant .splice )id et non de la position de la catégorie dans le tableau.Voici comment obtenir les catégories à partir de l'API:
<div class="list" v-for="category in filteredCategories" :key="category.id" />
oui merci, mais j'essaie de les obtenir depuis l'api, cela me semble un peu plus compliqué. voici mon code, où dois-je placer le calcul? async monté () this.Categories = wait axios.get (" localhost / wordpress / wp-json / wp / v2 / categories /" ) .then (response => {return response.data})
Réponse mise à jour. En bref: déclarez les Categories dans les data comme un tableau vide. Remplissez-le lorsque vous avez les données. Les filteredCategories fonctionneront.
fondamentalement comment puis-je obtenir tous les identifiants de catégorie> 1?