Vue Js - Vòng qua v-for X lần (trong một phạm vi)


112

Làm thế nào tôi có thể lặp lại một vòng lặp qua v-forX (ví dụ: 10) lần?

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

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

Tài liệu cho thấy:

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

nhưng từ đâu vue biết nguồn gốc của các đối tượng? Nếu tôi kết xuất nó như tài liệu nói, tôi nhận được số lượng các mục và các mục, nhưng không có nội dung.


Thật không may, điều đó không hoạt động, nhưng cảm ơn
MikeCaine.

Tại sao bạn không lặp lại shoppingItems?
Bert

1
Hy Bert - Tôi chỉ muốn biết cách đưa ra số lần lặp lại v-for (cách đơn giản nhất) a (x) và ví dụ trong tài liệu không hoạt động ...... .... trong js + ajax trả về quá đơn giản của nó <9 hoặc hoặc hoặc, nhưng điều này không hoạt động trong phương thức ...
MikeCaine

Có hai chế độ riêng biệt để v-for; khi nó được gọi đối với một số nguyên và khi nó được gọi đối với một mảng. Việc trộn các chế độ đó và cố gắng sử dụng một số nguyên để kiểm soát quyền truy cập vào nội dung của một mảng có thể gây ra sự cố. Nếu bạn cần một tập hợp con của mảng, bạn có thể lọc nó.
Jason Aller

Câu trả lời:


178

Bạn có thể sử dụng một chỉ mục trong một phạm vi và sau đó truy cập vào mảng thông qua chỉ mục của nó:

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

Bạn cũng có thể kiểm tra Tài liệu chính thức để biết thêm thông tin.


3
Nó hoạt động: :) Tôi đã thay đổi nó một chút thành <li v-for = "(n, index) trong 2"> {{shoppingItems.price}} </li> ==== MNY THXXXX Coder ***** ! ====
MikeCaine

1
Làm thế nào để biến 10 đó thành một biến ?, hình thành dữ liệu của thành phần?
alvaro

7
Tại sao điều này là 1-index là hoàn toàn vượt quá tôi. <span v-for="i in 5">{{i}} </span>=> 1 2 3 4 5. Sử dụng <span v-for="(e, i) in 5">{{i}} </span>để lập chỉ mục 0.
ggorlen

Tôi nhận thấy rằng bạn nên viết shoppingItems [index -1] .name để lặp qua toàn bộ mảng
peschanko

25

Tôi đã giải quyết nó với sự giúp đỡ của Dov Benjamin như vậy:

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

Và một phương pháp khác, cho cả V1.x và 2.x của 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

Tôi phải thêm parseInt()vào để nói với v-vì nó đang xem xét một số.

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




1

Trong 2.2.0+, khi sử dụng v-for với một thành phần, khóa bây giờ là bắt buộc .

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

Nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.