web-dev-qa-db-ja.com

Vue Js-v-for X回のループ(範囲内)

v-for X(例:10)回でループを繰り返すにはどうすればよいですか?

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

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

ドキュメンテーションは示します:

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

しかし、vueはどこからオブジェクトのソースを知っていますか?ドキュメントにあるようにレンダリングすると、アイテムとアイテムの数が取得されますが、コンテンツはありません。

52
MikeCaine

範囲内のインデックスを使用し、そのインデックスを介して配列にアクセスできます。

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

詳細については、 Official Documentation も確認できます。

Dov Benjaminの助けを借りて解決しました:

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

&私が検索して見つけた他の方法

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

コーダーに感謝します!

じゃあ

9
MikeCaine

ネイティブJSスライスメソッドを使用できます。

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

Slice()メソッドは、配列内の選択された要素を新しい配列オブジェクトとして返します。

移行ガイドのヒントに基づく: https://vuejs.org/v2/guide/migration.html#Replacing-the-limitBy-Filter

6
NickGreen

parseInt()を追加して、v-forが数字を見ていることを伝える必要がありました。

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

4
abbaf33f

rangeのv-forについても同様です。

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

2
besthost

2.2.0以降では、コンポーネントでv-forを使用する場合、keyrequired

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

ソース

1
tdhulster
var itemArray = ["item1", "item2", "item3", "item4", "item4"]
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<ul>
  <li v-for="item in itemArray">
    {{item}}
  </li>
</ul>
0