2017-12-17 1 views
0

Ich versuche einen reibungslosen Übergang mit einem Vue-Modal (the one in the guide) zu gewährleisten. Meine VueX store.js Datei enthält diese Mutation:VueX warten, bis Modal geschlossen wird, bevor es mit neuen Daten wieder geöffnet wird

swapModalView (state, view) { 
    state.modalView = 'none' 
    state.modalView = view 
} 

Der Modal schließt, wenn der Blick auf gesetzt ist „none“, und wieder öffnet, wenn es etwas anderes ist.

<VueModal v-if="modalView != 'none'"></VueModal> 

Es ist wahrscheinlich ziemlich einfach, aber wie kann ich die Ansicht zu ändern „none“, und es dann zu der Ansicht gesetzt geleitet wird nach dem Übergang endet? Ich würde denken, ich könnte es einfach hier tun, in der Mutation, oder?

Antwort

1

Ich habe es gefunden. Einfaches Einrichten eines Ereignis-Listeners für einen CSS-Übergang, den ich nie gemacht habe, ohne irgendwo Code zu kopieren.

swapModalView (state, view) { 
    let modal = document.getElementById('locustModal') 
    var launchNew = function (event) { 
    state.modalView = view 
    modal.removeEventListener('transitionend', launchNew) 
    } 
    state.modalView = 'none' 
    modal.addEventListener('transitionend', launchNew, false) 
} 
+1

Ich schlage vor, Sie auch die Ereignis-Listener im 'transitionend' Rückruf entfernen mit' element.removeEventListener() '' wenn swapModalView' der Lage ist, genannt mehrmals zu. https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener – kmc059000

+0

OK, ich werde die Antwort aktualisieren. Ich fand eine Antwort, die zu zeigen scheint, wie das gemacht wird, aber ich bin mir nicht ganz sicher, ob das alles notwendig ist oder ob es einfacher gemacht werden könnte. https://stackoverflow.com/questions/24273072/removing-css-transitionend-event-listener-not-working – Quin

Verwandte Themen