recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment Vue configure-t-il les types d'événements qu'il écoute?

Vue.component('button-counter', {
  template: '<button v-on:click="increment()">{{ counter }}</button>',
  data: function () {
    return {
      counter: 0
    }
  },
  methods: {
    increment: function () {
      this.counter += 1
    }
  },
})

Par exemple, dans le composant ci-dessus, j'espère que l'événement écouté par v-on est transmis par le composant parent, au lieu de l'écrire sous la forme cliquez ici. Comment dois-je l'écrire ?

Bien sûr, je sais utiliser les accessoires pour réussir, je veux savoir comment écrire v-on plus tard. Si vous écrivez directement propname, Vue pensera que l'événement à surveiller est propname, et non l'événement spécifique.

仅有的幸福仅有的幸福2731 Il y a quelques jours602

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-06-12 09:34:45

    La personne qui pose la question a des besoins particuliers. Si c'est le cas, vous devrez peut-être utiliser render代替template :

    .
    <p id="app">
      <button-counter :event="'click'">abc</button-counter>
    </p>
    const counter = Vue.component('button-counter', {
      render(createElement) {
        return createElement(
          'button', {
            on: {
              [this.event]: this.increment,
            },
          },
          `${this.counter}`,
        )
      },
      data() {
        return {
          counter: 0,
        }
      },
      props: {
        event: String
      },
      methods: {
        increment() {
          this.counter += 1
        },
      },
    })
    
    new Vue({
      el: '#app',
      components: {
        'button-counter': counter,
      },
    })

    répondre
    0
  • 黄舟

    黄舟2017-06-12 09:34:45

    Les composants parents transmettent des paramètres aux sous-composants via des accessoires. Les accessoires peuvent être des fonctions, vous pouvez donc transmettre une fonction aux sous-composants

    .

    répondre
    0
  • Annulerrépondre