J'essaie d'utiliser le v-text-field
autofocus
de Vuetify, mais cela ne fonctionne que la première fois. Après avoir fermé la boîte de dialogue, cela ne fonctionne plus.
Voici ce que j'essaie de faire:
<v-text-field ref="focus" autofocus></v-text-field>
En cherchant sur Google, j'ai découvert que c'était un bug qui a été corrigé dans une version mais ils avaient une solution temporaire que j'ai également essayée:
watch: {
dialog: (val) ->
if !val
debugger
requestAnimationFrame( =>
@$refs.focus.focus()
)
}
Suis-je en train de faire quelque chose de mal ou c'est toujours un bug? Définition du point d'arrêt J'ai vu qu'il s'arrête à ce point. Quelqu'un peut-il me conduire dans la bonne direction?
La seule différence que j'ai, c'est que j'utilise Vuex et que la variable de dialogue est dans le magasin Vuex. Et la boîte de dialogue est getter/setter.
dialog:
get: ->
return this.$store.state.my_store.isDialogOpen
set: (value) ->
this.$store.commit('my_store/MY_MUTATION', value)
La seule chose qui a fonctionné pour moi était le v-if="dialog"
car l'accessoire de mise au point automatique ne fonctionnera que lors du chargement initial, c'est pourquoi il n'était disponible que pour la première fois que j'ai ouvert la boîte de dialogue.
Ainsi, le champ v-tex de travail avec autofocus dans la boîte de dialogue ressemblerait à ceci:
<v-text-field label="Label" v-if="dialog" autofocus></v-text-field>
Dans votre sandbox (mais cela semble également être le cas dans votre question), vous avez eu une erreur dans votre code, vous avez supprimé return
de la solution de contournement fournie:
watch: {
dialog (val) {
if (!val) return; // you removed `return` here
requestAnimationFrame(() => {
return this.$refs.focus.focus();
}
});
Donc en fait ça marche