Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

705
Visualizações
Llamar al método padre con componente

Tengo un componente y quiero agregar un detector de clics que ejecute un método en la plantilla principal en Vue. es posible?

 <template> <custom-element @click="someMethod"></custom-element> </template> <script> export default { name: 'template', methods: { someMethod: function() { console.log(true); } } </script>
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

¡Sí!

Es posible llamar a un método padre desde un hijo y es muy fácil.

Cada componente de Vue define la propiedad $parent . Desde esta propiedad, puede llamar a cualquier método que exista en el padre.

Aquí hay un JSFiddle que lo hace: https://jsfiddle.net/50qt9ce3/1/

 <script src="https://unpkg.com/vue"></script> <template id="child-template"> <span @click="someMethod">Click me!</span> </template> <div id="app"> <child></child> </div> <script> Vue.component('child', { template: '#child-template', methods: { someMethod(){ this.$parent.someMethod(); } } }); var app = new Vue({ el: '#app', methods: { someMethod(){ alert('parent'); } } }); </script>

Nota : Si bien no se recomienda hacer este tipo de cosas cuando está creando componentes reutilizables desconectados, a veces estamos creando componentes no reutilizables relacionados y, en este caso, es muy útil.

over 4 years ago · Santiago Trujillo Relatório

0

Directamente desde la documentación de Vue.js:

En Vue, la relación del componente padre-hijo se puede resumir como apoyos hacia abajo, eventos hacia arriba. El padre pasa datos al hijo a través de accesorios, y el niño envía mensajes al padre a través de eventos...

Por lo tanto, debe emitir un evento de click desde su componente secundario cuando sucede algo, que luego se puede usar para llamar a un método en su plantilla principal.

Si no desea emitir explícitamente un evento desde el elemento secundario (usando this.$emit('click') de su componente secundario), también puede intentar usar un evento de clic nativo , @click.native="someMethod" .

over 4 years ago · Santiago Trujillo Relatório

0

Confiar en llamar a this.$parent oculta la dependencia y se romperá cuando use bibliotecas de componentes que crean una jerarquía secundaria más larga

Los métodos preferidos son:

  1. Pasar explícitamente métodos como propiedades a componentes secundarios (lo mismo que pasar accesorios de datos)
  2. O declarar métodos globales como mixins

De la respuesta de nils en el método principal de la llamada de herencia Vue.js :

  1. Pasando accesorios (padre-hijo)

     var SomeComponentA = Vue.extend({ methods: { someFunction: function () { // ClassA some stuff } } }); var SomeComponentB = Vue.extend({ props: [ 'someFunctionParent' ], methods: { someFunction: function () { // Do your stuff this.someFunctionParent(); } } });

    y en la plantilla de SomeComponentA:

     <some-component-b :someFunctionParent="someFunction"></some-component-b>
  2. usar mezclas

    Si esta es una funcionalidad común que desea usar en otros lugares, usar un mixin podría ser más idiomático:

     var mixin = { methods: { someFunction: function() { // ... } } }; var SomeComponentA = Vue.extend({ mixins: [ mixin ], methods: { } }); var SomeComponentB = Vue.extend({ methods: { someFunctionExtended: function () { // Do your stuff this.someFunction(); } } });

Otras lecturas

  • Vue.js: hacer que las funciones auxiliares estén disponibles globalmente para componentes de un solo archivo
  • Mezclas de Vue Docs
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda