Heim >Web-Frontend >View.js >Wie ruft eine Vue-Unterkomponente die Methode der übergeordneten Komponente auf?

Wie ruft eine Vue-Unterkomponente die Methode der übergeordneten Komponente auf?

青灯夜游
青灯夜游Original
2021-10-26 12:03:28124639Durchsuche

Methode: 1. Rufen Sie die Methode der übergeordneten Komponente über „this.$parent.event“ in der untergeordneten Komponente auf. 2. Die untergeordnete Komponente löst mit „$emit“ ein Ereignis für die übergeordnete Komponente aus, und die übergeordnete Komponente kann dieses Ereignis abhören. 3. Die übergeordnete Komponente übergibt die Methode an die untergeordnete Komponente, und die Methode kann direkt in der untergeordneten Komponente aufgerufen werden.

Wie ruft eine Vue-Unterkomponente die Methode der übergeordneten Komponente auf?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Vue-Version 2.9.6, DELL G3-Computer.

In Vue gibt es drei Methoden zum Aufrufen der übergeordneten Komponente aus der Unterkomponente. Hier sind drei Methoden als Referenz: Die erste Methode besteht darin, die übergeordnete Komponente direkt über this.$parent.event aufzurufen die Unterkomponente

Übergeordnete Komponente

<template>
  <p>
    <child></child>
  </p>
</template>
<script>
  import child from &#39;~/components/dam/child&#39;;
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod() {
        console.log(&#39;测试&#39;);
      }
    }
  };
</script>
Untergeordnete Komponente
<template>
  <p>
    <button @click="childMethod()">点击</button>
  </p>
</template>
<script>
  export default {
    methods: {
      childMethod() {
        this.$parent.fatherMethod();
      }
    }
  };
</script>

Die zweite Methode

besteht darin,

in der untergeordneten Komponente zu verwenden, um ein Ereignis für die übergeordnete Komponente auszulösen, und die übergeordnete Komponente kann dieses Ereignis abhören.

Übergeordnete Komponente

<template>
  <p>
    <child @fatherMethod="fatherMethod"></child>
  </p>
</template>
<script>
  import child from &#39;~/components/dam/child&#39;;
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod() {
        console.log(&#39;测试&#39;);
      }
    }
  };
</script>
$emitUntergeordnete Komponente

<template>
  <p>
    <button @click="childMethod()">点击</button>
  </p>
</template>
<script>
  export default {
    methods: {
      childMethod() {
        this.$emit(&#39;fatherMethod&#39;);
      }
    }
  };
</script>


Der dritte Weg

besteht darin, dass die übergeordnete Komponente die Methode an die untergeordnete Komponente übergibt und diese Methode direkt in der untergeordneten Komponente aufruft

Übergeordnete Komponente

<template>
  <p>
    <child :fatherMethod="fatherMethod"></child>
  </p>
</template>
<script>
  import child from &#39;~/components/dam/child&#39;;
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod() {
        console.log(&#39;测试&#39;);
      }
    }
  };
</script>
Untergeordnete Komponente

<template>
  <p>
    <button @click="childMethod()">点击</button>
  </p>
</template>
<script>
  export default {
    props: {
      fatherMethod: {
        type: Function,
        default: null
      }
    },
    methods: {
      childMethod() {
        if (this.fatherMethod) {
          this.fatherMethod();
        }
      }
    }
  };
</script>

[Verwandte Empfehlungen:

vue.js Tutorial

]

Das obige ist der detaillierte Inhalt vonWie ruft eine Vue-Unterkomponente die Methode der übergeordneten Komponente auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist eine Vue-Komponente?Nächster Artikel:Was ist eine Vue-Komponente?