1
votes

Existe-t-il un moyen d'obtenir l'index d'une option v-select sélectionnée dans Vuetify?

Je suis nouveau sur Vuetify et j'ai du mal à récupérer l'index d'une option sélectionnée sur le composant v-select.

Une fois que j'ai l'index, j'aimerais remplir un champ de texte basé sur l'option cliqué.

J'ai un tableau d'objets que je récupère de Firebase et que je transmets en tant que : items prop.

Je parviens à obtenir le index à l'aide d'une option select standard avec v-for pour parcourir le tableau, puis utilisez @change pour appeler une fonction qui utilise l'objet événement pour obtenir l'index selectedIndex. Cependant, je n'arrive pas à le comprendre en essayant d'utiliser le composant v-select

Cela fonctionne:

<v-select 
    outline 
    label="Select Shop" 
    :items="shopdata" 
    item-text="shopname" 
    item-value="" 
    v-model="trim.shop"
    @change="populateLicense"
>
</v-select>

Méthodes: p >

populateLicense(e) {
    let index = e.target.selectedIndex - 1
    this.trim.license = this.shopdata[index].license
},

Composant v-select actuel (ne fonctionne pas):

<select @change="populateLicense" v-model="trim.shop">
    <option value="">Select Shop</option>
    <option v-for="item in shopdata" :key="item.id">
        {{ item.shopname}}
    </option>
</select>

Je devine la valeur de l'élément code> peut fournir ce dont j'ai besoin, mais je ne suis pas sûr de ce que je suis censé lui attribuer

Toute aide est grandement appréciée, merci!


0 commentaires

3 Réponses :


0
votes

Vous pouvez définir l'identifiant dans votre v-select ... Et faites ceci: document.getElementById("mySelect").selectedIndex

Est-ce ce dont vous avez besoin?


1 commentaires

Merci pour la réponse Victor, malheureusement elle renvoie indéfini



4
votes

A pu le résoudre après avoir consulté à nouveau la documentation vuetify. Passer le prop return-object était la clé.

Code mis à jour pour tous ceux qui pourraient avoir un problème similaire!

v-select:

methods: {
    populateLicense(license) {
        this.trim.license = license
     }
}

Méthodes :

<v-select 
    outline 
    label="Select Shop" 
    :items="shopdata" 
    item-text="shopname" 
    v-model="trim.shop"
    return-object
    @change="populateLicense(trim.shop.license)"
>
</v-select>


0 commentaires

0
votes
 item-text="shopname" 
 item-value="" 

0 commentaires