70 votes

Comment limiter l'itération des éléments dans `v-for`

Je crée une petite application en Vuejs 2.0 J'ai environ 15 éléments itératifs Je veux limiter le v-for pour seulement 5 éléments et je peux avoir plus de boutons pour afficher la liste entière. Y a-t-il des possibilités?

175voto

imcvampire Points 2000

Vous pouvez essayer ce code

 <div v-if="showLess">
  <div v-for="value in array.slice(0, 5)"></div>
</div> 
<div v-else> 
  <div v-for="value in array"></div>
</div> 
<button @click="showLess = false"></button>
 

Vous n'aurez que 5 éléments dans le nouveau tableau.

Mise à jour: petit changement qui rend cette solution compatible avec les tableaux et les objets

 <div v-if="showLess">
  <div v-for="(value,index) in object" v-if="index <= 5"></div>
</div> 
<div v-else> 
  <div v-for="value in object"></div>
</div> 
<button @click="showLess = false"></button>
 

31voto

unplugged Points 147

Suis-je trop tard? Vous pouvez résoudre ce problème en utilisant des propriétés calculées:

 <div v-for="value in computedObj">{{value}}</div>
<button @click="limit = null">Shore more</button>
 

Puis dans vos données:

 data(){
  return {
    object:[], // your original data
    limit: 5 // or any number you wish to limit to
  }
}
 

Et enfin dans vos propriétés calculées:

 computed:{
  computedObj(){
    return this.limit ? this.object.slice(0,this.limit) : this.object
  }
}
 

Lorsque vous cliquez sur le bouton, la limite est effacée et toutes les données sont affichées / retournées

7voto

Davod Aslanifakor Points 408

vous pouvez essayer cette solution pour ...

 <div  class="body-table  div-table" v-for="(item,index) in items"  :key="item.id" v-if="items && items.length > 0 && index <= limitationList">....
 

et définissez votre limite dans les données

 data() {
  return {
    limitationList:5
  };
},
 

et définir une fonction en vous btn

   <button  @click="updateLimitation(limitationList)">
    show {{limitationList == 5 ? 'more' : 'less'}}
  </button>
 

et ce vos méthodes

 updateLimitation(limitationList){
  if (this.limitationList == this.items.length) {
    this.limitationList = 5
  }else{
    this.limitationList = this.items.length
  }
}
 

j'espère utile pour vous ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X