278 votes

Vue Js - Boucle via v-for X fois (dans un intervalle)

Comment puis-je répéter une boucle via v-for X (par exemple 10) fois ?

// want to repeat this (e.g.) 10 times

<ul>
  <li v-for="item in shoppingItems">
    {{ item.name }} - {{ item.price }}
  </li>
</ul>

La documentation montre :

<ul>
  <li v-for="item in 10">{{ item }}</li>
</ul>

// or 

<li v-for="n in 10">{{ n }} </li>

// this doesn't work

<li v-for="item in 10">{{ item.price }}</li>

mais d'où Vue connaît-il la source des objets ? Si j'effectue le rendu comme indiqué dans la documentation, j'obtiens le nombre d'éléments et d'éléments, mais sans contenu.

0 votes

Malheureusement, cela ne fonctionne pas, mais merci

0 votes

Pourquoi ne pas simplement itérer shoppingItems ?

2 votes

Hy Bert - Je veux seulement savoir comment donner à un v-for (de la manière la plus simple) un (x) nombre de répétitions et l'exemple dans la doc ne fonctionne pas...... .... en js pur + ajax c'est si simple return < 9 ou ou ou, mais cela ne fonctionne pas dans la méthode....

391voto

Vous pouvez utiliser un index dans une plage et accéder ensuite au tableau via son index :

<ul>
  <li v-for="index in 10" :key="index">
    {{ shoppingItems[index].name }} - {{ shoppingItems[index].price }}
  </li>
</ul>

Notez qu'il s'agit d'une indexation 1 : à la première itération, index est 1, et dans la deuxième itération, index est égal à 2, et ainsi de suite.

Vous pouvez également vérifier le Documentation officielle pour plus d'informations.

6 votes

Cela fonctionne : :) Je l'ai légèrement modifié en <li v-for="(n,index) in 2">{{ shoppingItems.price }}</li> ==== MNY THXXXX Coder***** ! ====

4 votes

Comment faire de cette 10 une variable, former les données du composant ?

55 votes

Je ne comprends pas pourquoi il est indexé 1. <span v-for="i in 5">{{i}} </span> => 1 2 3 4 5 . Utilisez <span v-for="(e, i) in 5">{{i}} </span> pour obtenir l'indexation 0.

73voto

MikeCaine Points 295

Je l'ai résolu avec l'aide de Dov Benjamin comme ça :

<ul>
  <li v-for="(n,index) in 2">{{ n }}, {{ index }}</li>
</ul>

Notez que dans ce cas, n est 1-indexé, et index est indexé à 0.

Et une autre méthode, pour les deux V1.x et 2.x de vue.js

Vue 1:

<p v-for="item in items | limitBy 10">{{ item }}</p>

Vue2:

// Via slice method in computed prop

<p v-for="item in filteredItems">{{ item }}</p>

computed: {
   filteredItems: function () {
     return this.items.slice(0, 10)
     }
  }

1 votes

J'ai dû ajouter :key pour le faire fonctionner dans vue3 donc <li v-for="(n, index) in 2" :key="index">{{ n }}, {{ index }}</li>

37voto

jmb.mage Points 127

J'ai dû ajouter parseInt() pour dire à V. qu'il regardait un nombre.

<li v-for="n in parseInt(count)" :key="n">{{n}}</li>

2 votes

Notez qu'il s'agit d'une indexation 1.

30voto

NickGreen Points 781

Vous pouvez utiliser la méthode de découpage JS native :

<div v-for="item in shoppingItems.slice(0,10)">

La méthode slice() renvoie les éléments sélectionnés dans un tableau, sous la forme d'un nouvel objet tableau.

Basé sur les conseils du guide de migration : https://vuejs.org/v2/guide/migration.html#Replacing-the-limitBy-Filter

1 votes

Merci, meilleure réponse

6voto

besthost Points 178

Il en va de même pour v-for dans gamme :

<li v-for="n in 20 " :key="n">{{n}}</li>

3 votes

Veuillez vérifier tdhulster répondre en premier.

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