J'ai la liste déroulante Vue.
text= "{{ variable }}"
Je n'ai pas besoin de changer la valeur de la liste déroulante. Dans mon cas, c'est UserName
Je n'ai trouvé que de cette manière:
document.getElementById("dropdown-1").childNodes[1].innerHTML="new value"
Je sais que ce n'est pas la bonne manière mais je n'ai pas t trouver le chemin correct (via l'API ou quelque chose comme ça). Cette méthode ne fonctionne pas non plus:
<b-dropdown id="dropdown-1" text= "UserName" class="m-md-2" > <b-dropdown-item class="dropdown-link">Log out</b-dropdown-item> </b-dropdown>
Des idées?
3 Réponses :
Pour rendre le texte
dynamique, vous devez lier à une variable de votre instance de composant Vue. Un attribut HTML peut être rendu dynamique et lié à une variable en utilisant le préfixe :
avant le nom d'attribut (qui est un raccourci de v-bind:
)
Donné :
data() { return { variable: '' // Variable initialisation } }
Dans le composant, vous devriez avoir la déclaration de variable
correspondante:
<b-dropdown id="dropdown-1" :text="variable" class="m-md-2" > <b-dropdown-item class="dropdown-link">Log out</b-dropdown-item> </b-dropdown>
MuratK a probablement raison, mais je comprends que vous souhaitez lier l'élément de liste déroulante, pas l'élément parent. Vous pouvez le faire avec un v-for et une liaison de texte, comme:
<b-dropdown-item v-for="item in items">{{ item }}</b-dropdown-item>
Ensuite, dans vos données, définissez 'items' comme un tableau de chaînes, comme ['log out', ' préférences »,« signez-le »]. Vous pouvez également utiliser cette syntaxe, elle en fait de même dans votre exemple:
<b-dropdown id="dropdown-1" class="m-md-2" > <b-dropdown-item v-for="item in items" v-text="item"></b-dropdown-item> </b-dropdown>
Vous pouvez lier une valeur dynamique pour text
prop sur
et la modifier avec l'événement click de
//script data () { return { buttonTitle: 'Username' } }
<b-dropdown :text="buttonTitle"> <b-dropdown-item @click="buttonTitle = 'new value'">Log out</b-dropdown-item> </b-dropdown>