faire d'un index une clé unique dans un v-for

Par DevSoftCy, il y a 3 ans


Javascript VueJS

Bonjour, j'ai un tableau qui m'affiche une liste de données, je n'ai au départ pas de clé unique (car les données viennent de plusieurs tables d'un autre serveur). J'ai rajouté un index dans mon v-for.

<tbody id="datas"> <tr v-for="(data, index) in datas" :key="index" :id="data.number" > <td>{{ index }}</td> <td class="tw-border-solid tw-border-t tw-border-gray-200 tw-p-3" > <i class="fas fa-file-invoice fa-2x wd-40 tx-gray-400" ></i> {{ data.number }} </td> <td class="tw-border-solid tw-border-t tw-border-gray-200 tw-p-3" > {{ data.office }} </td> ....

Ce que je veux

Je voudrais que mon index devienne unique. le data.number n'est pas unique il peut contenir plusieurs fois la même valeur et quand je veux effacer ce data.number il m'efface les autres data.number qui ont la même valeur. J'ai rajouté le index mais il m'efface toujours toutes les valeurs (index rajouté dans mon axios :

axios({ method: "DELETE", url: "/data/datas/" + number, cache: false, params: { data_id: this.data, year: this.year, index: this.index, }, _token: token(), }).then((response) => this.datas.splice(index, 1));

Ce que j'obtiens

Est ce que quelqu'un aurait une idée ?? Je fais pas mal de tests avec vuejs pour le moment

5 réponses

DevSoftCy, il y a 3 ans

Après je travaille avec un index mais si quelqu'un a une autre idée je suis preneuse

gillesr, il y a 3 ans

Bonjour,
que récupères-tu comme données pour chaque ligne ?
La clé dans un v-for n'ést pas obligatoirement un index numérique, il faut juste que ce soit unique pour éviter le problème que tu rencontres.
S'il n'y a pas d'index, il faut pouvoir trouver un élément unique... ou le générer, par exemple en combinant l'id avec le nom de la table.

DevSoftCy, il y a 3 ans

Bonjour, je récupère un numéro, un caractère et l'année. Je pensais travailler sur un numéro unique mais ce numéro ne l'est pas. Je dois pouvoir avoir un id ou index unique pour chaque row de ma table.

JoolsMcFly, il y a 3 ans

Tu peux combiner les ID des deux tables pour créer un unique ptt.
Si par exemple t'as une ligne avec ID=12 de table user et une ligne avec ID=45 de la table address tu peux faire une valeur unique u-12-a-45.

DevSoftCy, il y a 3 ans

Bonjour, merci pour la réponse, j'ai travaillé autrement, on a bien une valeur unique à un moment dans une des tables du coup j'ai récupéré cette valeur là. Merci beaucoup