Hmotnost řetězu handler v Vue2

0

Otázka

Mám komponentu (Vue2) s několika tlačítky. Po zpracování každé tlačítko je @klikněte, musím zavolat metodu.

Jak mohu udělat to bez přidání volání do jednotlivých @klepněte na tlačítko? Samozřejmě, že všechny @kliknutí jsou různé.

Jediný nápad, který vidím, je vytvořit složku pro tlačítko, možná existuje lepší řešení?

vuejs2
2021-11-23 09:34:21
1

Nejlepší odpověď

1

Stačí použít jeden handler pro všechny @click události a předat obslužné rutiny funkce pro konkrétní tlačítko jako argument....

new Vue({
  el: "#app",
  methods: {
    handleClick: function(handler) {
      handler()
      console.log("Common code executed")
    },
    button1: function() {
      console.log("Button 1 clicked")
    },
    button2: function() {
      console.log("Button 2 clicked")
    },
    button3: function(a) {
      console.log(`Button 3 clicked (with additional argument: "${a}")`)
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.14/vue.js"></script>
<div id="app">
  <button type="button" @click="handleClick(button1)">Button 1</button>
  <button type="button" @click="handleClick(button2)">Button 2</button>
  <button type="button" @click="handleClick(() => button3('hi!'))">Button 3 (with additional argument)</button>
</div>

2021-11-23 10:02:36

Zajímavý nápad, jak se mi podařilo minout?...
Alex Povolotsky

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................