<li v-for="(itemObjKey, catalog) in catalogs">this index : {{itemObjKey}}</li>
Sortie:
cet index: 0
cet index: 1
Ma question est:
vous pouvez simplement ajouter 1
<li v-for="(itemObjKey, catalog) in catalogs">this index : {{itemObjKey + 1}}</li>
pour obtenir la longueur d'un tableau/d'objets
{{ catalogs.length }}
Alternativement, vous pouvez simplement utiliser,
<li v-for="catalog, key in catalogs">this is index {{++key}}</li>
Cela fonctionne très bien.
Dans le cas où vos données sont dans la structure suivante, vous obtenez une chaîne sous forme d’index.
items = {
am:"Amharic",
ar:"Arabic",
az:"Azerbaijani",
ba:"Bashkir",
be:"Belarusian"
}
Dans ce cas, vous pouvez utiliser une variable supplémentaire pour obtenir le numéro d'index:
<ul>
<li v-for="(item, key, index) in items">
{{ item }} - {{ key }} - {{ index }}
</li>
</ul>
L'argument optionnel SECOND est l'index, commençant à 0. Donc, pour sortir l'index et la longueur totale d'un tableau appelé 'some_list':
<div>Total Length: {{some_list.length}}</div>
<div v-for="(each, i) in some_list">
{{i + 1}} : {{each}}
</div>
Si au lieu d'une liste, vous parcouriez un objet, le second argument est la clé de la paire clé/valeur. Donc pour l'objet 'mon_objet':
var an_id = new Vue({
el: '#an_id',
data: {
my_object: {
one: 'valueA',
two: 'valueB'
}
}
})
Ce qui suit afficherait les paires clé: valeur. (vous pouvez nommer 'each' et 'i' comme vous voulez)
<div id="an_id">
<span v-for="(each, i) in my_object">
{{i}} : {{each}}<br/>
</span>
</div>
Pour plus d'informations sur le rendu de la liste Vue: https://vuejs.org/v2/guide/list.html
En utilisant Vue 1.x, utilisez la variable spéciale $index
comme ceci:
<li v-for="catalog in catalogs">this index : {{$index + 1}}</li>
vous pouvez également spécifier un alias sous la forme premier argument pour la directive v-for
, comme suit:
<li v-for="(itemObjKey, catalog) in catalogs">
this index : {{itemObjKey + 1}}
</li>
Voir: Guide Vue 1.x
En utilisant Vue 2.x, v-for
fournit un argument optionnel de second référençant l'index de l'élément actuel, vous pouvez en ajouter un dans votre modèle de moustache, comme précédemment
<li v-for="(catalog, itemObjKey) in catalogs">
this index : {{itemObjKey + 1}}
</li>
Voir: Guide de Vue 2.x
L'élimination des parenthèses dans la syntaxe v-for
fonctionne également très bien, par conséquent:
<li v-for="catalog, itemObjKey in catalogs">
this index : {{itemObjKey + 1}}
</li>
J'espère que cela pourra aider.
Pourquoi son impression 0,1,2 ...?
Parce que ce sont des index des éléments du tableau, et index commence toujours de 0 à array.length-1.
Pour imprimer le nombre d'éléments au lieu de l'index, utilisez index+1
. Comme ça:
<li v-for="(catalog, index) in catalogs">this index : {{index + 1}}</li>
Et pour afficher le nombre total, utilisez array.length
, comme ceci:
<p>Total Count: {{ catalogs.length }}</p>
Selon DOC:
v-for prend également en charge un argument facultatif second (pas le premier) pour l'index de l'élément en cours.