Vue.js
Lebenszyklus-Haken
Suche…
Haken für Vue 1.x
init
created
$el
Setup auf, aber nachdata observation
wurdencomputed properties
,watch/event callbacks
undmethods
.
beforeCompile
compiled
directives
sind verknüpft, aber noch bevor$el
verfügbar ist.
ready
$el
ist abgeschlossen und die Instanz wird zum ersten Mal in das DOM eingefügt.
attached
$el
durch einedirective
an das DOM angehängt wird oder die Instanz$appendTo()
.
detached
$el
von der DOM- oder Instanzmethode entfernt / getrennt wird.
beforeDestroy
destroyed
bindings
unddirectives
wurden bereits ungebunden und untergeordnete Instanzen wurden ebenfalls zerstört.
Verwendung in einer Instanz
Da alle Lebenszyklus-Hooks in Vue.js
nur functions
, können Sie alle direkt in der Instanzdeklaration platzieren.
//JS
new Vue({
el: '#example',
data: {
...
},
methods: {
...
},
//LIFECYCLE HOOK HANDLING
created: function() {
...
},
ready: function() {
...
}
});
Häufige Fallstricke: Zugriff auf DOM über den `ready ()` - Haken
Eine häufige Verwendung des ready()
Hooks ist der Zugriff auf das DOM, z. B. um ein Javascript-Plugin zu initiieren, die Dimensionen eines Elements zu ermitteln usw.
Das Problem
Aufgrund des asynchronen DOM-Aktualisierungsmechanismus von Vue kann nicht garantiert werden, dass das DOM beim Aufruf des ready()
-Hooks vollständig aktualisiert wurde. Dies führt normalerweise zu einem Fehler, da das Element nicht definiert ist.
Die Lösung
In dieser Situation kann die $nextTick()
hilfreich sein. Diese Methode verschiebt die Ausführung der bereitgestellten Rückruffunktion bis nach dem nächsten Tick, was bedeutet, dass sie ausgelöst wird, wenn garantiert ist, dass alle DOM-Aktualisierungen abgeschlossen sind.
Beispiel:
module.exports { ready: function () { $('.cool-input').initiateCoolPlugin() //fails, because element is not in DOM yet. this.$nextTick(function() { $('.cool-input').initiateCoolPlugin() // this will work because it will be executed after the DOM update. }) } }