Vue Js - Loop tramite v-for X times (in a range)


112

Come posso ripetere un ciclo tramite v-forX (ad esempio 10) volte?

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

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

La documentazione mostra:

<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>

ma da dove vue conosce la fonte degli oggetti? Se lo visualizzo come dice il documento, ottengo il numero di elementi e oggetti, ma senza contenuto.


Purtroppo non funziona, ma grazie
MikeCaine

Perché non dovresti semplicemente iterare shoppingItems?
Bert

1
Hy Bert - Voglio solo sapere come dare un v-per (il modo più semplice) un (x) numero di ripetizioni e l'esempio nel documento non funziona ...... .... in puro js + ajax è così semplice ritorno <9 o o o, ma questo non funziona nel metodo ...
MikeCaine

Ci sono due modalità distinte per v-for; quando viene chiamato su un numero intero e quando viene chiamato su un array. Mescolare queste modalità e provare a utilizzare un numero intero per controllare l'accesso al contenuto di un array può causare problemi. Se hai bisogno di un sottoinsieme dell'array, puoi filtrarlo.
Jason Aller

Risposte:


178

È possibile utilizzare un indice in un intervallo e quindi accedere all'array tramite il suo indice:

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

Puoi anche controllare la documentazione ufficiale per ulteriori informazioni.


3
Funziona: :) L'ho cambiato leggermente in <li v-for = "(n, index) in 2"> {{shoppingItems.price}} </li> ==== MNY THXXXX Coder ***** ! ====
MikeCaine

1
Come rendere quel 10 una variabile ?, dai dati del componente?
alvaro

7
Perché questo è 1 indicizzato è completamente al di là di me. <span v-for="i in 5">{{i}} </span>=> 1 2 3 4 5. Utilizzare <span v-for="(e, i) in 5">{{i}} </span>per ottenere 0-indicizzazione.
ggorlen

Ho notato che dovresti scrivere shoppingItems [index -1] .name per iterare sull'intero array
peschanko

25

L'ho risolto con l'aiuto di Dov Benjamin in questo modo:

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

E un altro metodo, sia per V1.x che per 2.x di 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)
     }
  }

14

Ho dovuto aggiungere parseInt()per dire a v-perché stava guardando un numero.

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




1

Nella 2.2.0+, quando si usa v-for con un componente, ora è richiesta una chiave .

<div v-for="item in items" :key="item.id">

fonte

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.