2017-10-03 2 views
0

Ich benutze VueJS 2 und ich finde wirklich nicht heraus, wie von der Kindkomponente zum Elternteil kommuniziert wird.

Ich habe 2 Komponenten: dashboad und DashboardPanel.

In DashboardPanel habe ich eine Methode:

execute() { 
    // emit to parent 
    this.$emit('executeSQL', this.value) 
    ... 
} 

Und in Armaturenbrett:

mounted() { 
    // get event from DashboardPanel 
    this.$on('executeSQL', function(value) { 
     alert(value) 
    }) 
} 

Nichts passiert, finde ich nicht in doc wo verwenden $ auf und ich weiß nicht, ob ich andere Wege nutzen kann, um es zu erreichen?

+0

Angenommen, DashboardPanel ist die untergeordnete Komponente, haben Sie 'this. $ Parent. $ Emit' versucht? – Pradeepb

Antwort

1

Sie müssen in Dashboard Komponente angeben, wie auf executeSQL Ereignis von DashboardPanel Komponente reagieren. In der HTML-Vorlage von Dashboard:

<DashboardPanel v-on:executeSQL="doExecuteSQL($event)" /> 

doExecuteSQL beeing ein Verfahren zur Herstellung Dashboard:

methods: { 
    doExecuteSQL(value) { ... } 
} 

Hope this helfen.

+0

Ja Ich habe diese Methode verwendet, aber ich verstehe nicht, warum das $ on-Ereignis in JS nicht funktioniert –

+0

'$ on' dient zum Abhören von Ereignissen, die von derselben Komponente ausgegeben werden. Also würde 'this. $ On ('executeSQL')' in der DashboardPanel-Komponente funktionieren, aber nicht in der Dashboard-Komponente – thanksd