javascript jquery vue.js

javascript - ¿Es posible desencadenar eventos usando Vue.js?



jquery (3)

Necesita obtener una referencia a su botón usando v-el como:

<button type="button" @click="myClickEvent" v-el:my-btn>Click Me!</button>

Luego, en tu método:

function anotherRandomFunction() { var elem = this.$els.myBtn elem.click() }

Es solo un evento de clic DOM nativo. Ver documentación v-el

O desde Vue 2.x:

<template> <button type="button" @click="myClickEvent" ref="myBtn"> Click Me! </button> </template> <script> export default { methods: { myClickEvent($event) { const elem = this.$refs.myBtn elem.click() } } } </script>

Ya que Vue usa y escucha solo para eventos DOM nativos. Puede desencadenar eventos DOM nativos usando el Element#dispatchEvent forma:

var elem = this.$els.myBtn; // Element to fire on var prevented = elem.dispatchEvent(new Event("change")); // Fire event if (prevented) {} // A handler used event.preventDefault();

Esto no es exactamente lo ideal o la mejor práctica. Idealmente, debería tener una función que maneje las partes internas y un controlador de eventos que llame a esa función. De esa manera, puede llamar a las partes internas cuando lo necesite.

Acabo de empezar a usar Vue.js y me encuentro recurriendo continuamente a jQuery para ayudar en ciertas situaciones. Más recientemente, he intentado, sin éxito, "desencadenar" (o emular) un evento, como un clic o un evento borroso.

Sé que en jQuery puedes hacer lo siguiente:

$(''#my-selector'').trigger(''click'');

Pero, ¿cómo se puede lograr esto usando Vue.js? Estoy deseando alejarme de usar jQuery tanto como sea posible.

Tomemos como ejemplo lo siguiente:

<div id="my-scope"> <button type="button" v-on="click: myClickEvent">Click Me!</button> </div> <script> new Vue({ el: "#my-scope", data: { foo: "Hello World" }, methods: { myClickEvent: function(e) { console.log(e.targetVM); alert(this.foo); }, anotherRandomFunciton: function() { this.myClickEvent(); } } }); </script>

Si tuviera que llamar a otroRandomFunciton , me gustaría que emule (o dispare) el evento de clic anterior. Sin embargo, intento que el evento (o e en el ejemplo anterior) nunca pase a la función.

¿Vue.js tiene un método para lograr esto?



Si alguien se topa con esto, así es como lo hice:

Al usar este. $ Refs.myBtn.click () Me sale "UnCught TypeError: this. $ Refs.myBtn.click no es una función"

Se cambió a: este. $ Refs.myBtn. $ El.click ()

Para que quede claro: " $ el " debe agregarse para que funcione.