Estou usando o Vue 3. Não consigo obter valores de conjunto de dados do meu botão:
este é o botão:
<script src="https://unpkg.com/[email protected]/dist/vue.global.js"></script>
<button id="profile"
v-on:click="start" :data-id="19876"
class="profile"
data-gender="{{$gender}}">
</button>
Este é meu objeto vue:
<script>
Vue.createApp({
data() {
return {
state: null,
};
},
mounted() {
console.log(this);
},
methods: {
startChat(event){
// const { id } = event.target.dataset;
var id = event.target.getAttribute('data-id');
console.log(id);
},
}
}).mount('#profile');
</script>
Isso retorna o valor nulo.
Eu também tentei isso:
const { id } = event.target.dataset;
Ele retorna valor indefinido.
Você está montando o Vue diretamente no
#profile
botão, mas o Vue funciona melhor quando montado em um elemento wrapper (por exemplo, a<div>
) que contém o botão. Como o próprio botão é a raiz da instância do Vue, o Vue assume e remove os atributos data-*, e é por isso que você não está obtendo os valores esperados.Para corrigir isso, envolva seu botão dentro de um e monte o Vue nessa div.
Leia mais sobre a montagem do Vue nos documentos oficiais
se no meu html eu tiver algo assim (um blade.php no meu caso):
Posso acessar esses dados assim nos meus componentes vue:
Mas tudo funciona bem. Você tem erros no seu código. Por exemplo, você chama o
startChat
método, mas o evento de clique é manipulado porstart
...É assim que deveria ser:
Parque infantil Vue SFC