2017-10-17 2 views
0
<root> 
    <my-button @click="save()"/> 
    <my-form/> 
</root> 

my-form.vue 

methods:{ 
    save(){} 
} 

Wie Aufruf save() von my-Form über my-Taste?Vue Anruf Geschwister Methode

+2

Emit und auf Ereignisse hören, oder Vuex verwenden. https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication – ceejayoz

Antwort

2

Sie können ein Ereignis Bus benutzen:

let EventBus = new Vue(); 

let MyButton= Vue.extend({ 
    name: "my-button", 
    props: ["what"], 
    template: ` 
    <button class="btn btn-md btn-success the-button" @click="save()">Sender: {{what}}</button> 
    `, 
    methods: { 
    save: function(){ 
     EventBus.$emit("form.save", //pass payload here); 
    } 
    } 
}); 

Vue.component("my-button", MyButton); 

***my-form.vue:**** 

created(){ 
    EventBus.$on('form.save', (payload)=>{ 
     this.save(payload) 
    }); 
}, 
methods:{ 
    save(payload) {} 
} 

Vollarbeitsprobe: https://jsfiddle.net/arvidkahl/gxdn6ycv/17/

+0

ob Geschwister auch eine Eltern-Kind-Beziehung haben? –

+2

Es spielt keine Rolle, solange Sie den gleichen EventBus verwenden, hören alle auf dieselben Ereignisse – Tomer