Vue Js - 通过v-循环X次(在一个范围内)

Mik*_*ine 67 javascript vue.js vuejs2 v-for

如何通过v-forX(例如10次)重复循环?

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

<ul>
  <li v-for="item in shoppingItems">
    {{ item.name }} - {{ item.price }}
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

文档显示:

<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>
Run Code Online (Sandbox Code Playgroud)

但vue从哪里知道对象的来源?如果我像文档说的那样呈现它,我会获得项目和项目的数量,但没有内容.

Dov*_*ski 119

您可以使用范围中的索引,然后通过其索引访问该数组:

<ul>
  <li v-for="index in 10" :key="index">
    {{ shoppingItems[index].name }} - {{ shoppingItems[index].price }}
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

您还可以查看官方文档以获取更多信息.

  • 为什么这是 1 索引完全超出我的范围。`&lt;span v-for="i in 5"&gt;{{i}} &lt;/span&gt;` =&gt; `1 2 3 4 5`。使用 `&lt;span v-for="(e, i) in 5"&gt;{{i}} &lt;/span&gt;` 获得 0 索引。 (21认同)
  • @ggorlen `v-for` 指令与标准 JS for 循环不同。第一个参数是标准用例中数组元素(而不是索引)的别名。索引作为第二个元素给出,因此“(e, i)”返回该元素及其索引。当使用 `v-for="n in 10"` 时,`n` 是“元素”,我猜它是索引+1。所以你的解决方案是正确的:要获取索引,请使用 `v-for="(n, i) in 10"` ,其中 `n` 是 1 索引,而 `i` 是 0 索引。有关该指令的详细信息位于 https://vuejs.org/v2/guide/list.html (4认同)
  • 我注意到您应该编写 shoppingItems[index -1].name 来迭代整个数组 (3认同)
  • 它可以工作::)我在2“&gt; {{shoppingItems.price}} &lt;/ li&gt;中将其略微更改为&lt;li v-for =”(n,index)&lt;/ li&gt; ==== MNY THXXXX Coder ***** !==== (2认同)
  • 如何使那 10 个变量?,形成组件的数据? (2认同)

Ali*_*aza 26

解决方案1:

<p v-for="i in 5" :key="i">{{ i }}</p>
Run Code Online (Sandbox Code Playgroud)

请记住,结果将为 1-5。

在此输入图像描述

解决方案 2: 如果您想显示数组中有限数量的元素。您应该使用JavaScript 的slice()方法。

<p v-for="i in usersList.slice(0,5)" :key="i">{{ i }}</p>
Run Code Online (Sandbox Code Playgroud)

  • 不过,这从“1”开始,而不是“0”...... (2认同)

Mik*_*ine 10

我已经在Dov Benjamin的帮助下解决了这个问题:

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

和我搜索和发现的另一种方法

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)
     }
  }
Run Code Online (Sandbox Code Playgroud)

谢谢编码!

再见


Nic*_*een 9

您可以使用本机JS slice方法:

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

slice()方法将数组中选定的元素作为新的数组对象返回。

根据迁移指南中的提示:https : //vuejs.org/v2/guide/migration.html#Replacing-the-limitBy-Filter


abb*_*33f 7

我不得不parseInt()告诉v-因为它正在查看一个数字。

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

  • 请注意,这是 1 索引的。 (2认同)

bes*_*ost 5

v-for in range 也是如此

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

  • 请先检查 [tdhulster](/sf/users/135216651/) 的答案。 (2认同)