Vue Js - Schleife über v-für X-mal (in einem Bereich)


106

Wie kann ich eine Schleife über v-forX (zB 10) Mal wiederholen ?

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

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

Die Dokumentation zeigt:

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

aber woher kennt vue die quelle der objekte? Wenn ich es wie im Dokument angegeben rendere, erhalte ich die Anzahl der Elemente und Elemente, jedoch ohne Inhalt.


Leider funktioniert das nicht, aber danke
MikeCaine

Warum würden Sie nicht einfach ShoppingItems iterieren?
Bert

1
Hy Bert - Ich möchte nur wissen, wie man einem v-for (auf einfachste Weise) eine (x) Anzahl von Wiederholungen gibt, und das Beispiel im Dokument funktioniert nicht ...... .... in reinem js + Ajax seine so einfache Rückkehr <9 oder oder oder, aber das funktioniert nicht in der Methode ...
MikeCaine

Es gibt zwei verschiedene Modi v-for; wenn es gegen eine ganze Zahl aufgerufen wird und wenn es gegen ein Array aufgerufen wird. Das Mischen dieser Modi und der Versuch, eine Ganzzahl zu verwenden, um den Zugriff auf den Inhalt eines Arrays zu steuern, kann Probleme verursachen. Wenn Sie eine Teilmenge des Arrays benötigen, können Sie diese filtern.
Jason Aller

Antworten:


171

Sie können einen Index in einem Bereich verwenden und dann über seinen Index auf das Array zugreifen:

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

Weitere Informationen finden Sie auch in der offiziellen Dokumentation .


2
Es funktioniert: :) Ich habe es leicht in <li v-for = "(n, index) in 2" geändert.> {{ShoppingItems.price}} </ li> ==== MNY THXXXX Coder ***** ! ====
MikeCaine

Wie macht man diese 10 zu einer Variablen?, Bildet man die Daten der Komponente?
Alvaro

5
Warum dies 1-indiziert ist, ist mir völlig unverständlich. <span v-for="i in 5">{{i}} </span>=> 1 2 3 4 5. Verwenden Sie <span v-for="(e, i) in 5">{{i}} </span>diese Option , um eine 0-Indizierung zu erhalten.
Ggorlen

Mir ist aufgefallen, dass Sie
purchaseItems

23

Ich habe es mit Dov Benjamins Hilfe so gelöst:

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

Und eine andere Methode für V1.x und 2.x von 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)
     }
  }

13

Ich musste hinzufügen parseInt(), um v-for zu sagen, dass es sich um eine Nummer handelte.

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




1

In 2.2.0+ ist jetzt bei Verwendung von v-for mit einer Komponente ein Schlüssel erforderlich .

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

Quelle

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.