2016-12-24 4 views
6

Ich habe einige JQuery-Plugins, die initialisiert werden müssen, normalerweise könnte dies mit $(document).ready(function() { }) getan werden, aber dies scheint nicht zu funktionieren, wenn Sie es innerhalb eines vue-Komponenten created Ereignisses tun. In diesem Sinne habe ich this.$nextTick(function() { }) verwendet, aber das scheint nicht mit Elementen zu funktionieren, die in der Kindkomponente eingeführt werden. Zum Beispiel, ich dies tun:Vuejs - Wann sollten jquery plugins initialisiert werden?

created: function() { 
    this.$nextTick(function() { 
    window.materialadmin.AppOffcanvas.initialize() 
    }) 
} 

Ich habe einen Knopf, der in einer untergeordneten Komponente eingeführt wird, aber die Onclick-Handler das obige Code nicht ausgelöst beimißt. Wenn ich das tue:

setTimeout(function() { 
    window.materialadmin.AppOffcanvas.initialize() 
}, 1000) 

Dann wird meine Click-Handler gebunden sein und arbeiten.

An welchem ​​Punkt ist der richtige Punkt, um meine Ereignisse zu binden, so dass ich nicht auf setTimeout verlassen muss, die hacky ist?

Antwort

3

mounted oder updatedLifecycle-Hooks sollte Ihr Problem lösen, wie sie montiert wird aufgerufen, nachdem die Instanz montiert wurde gerade wo el durch die neu geschaffene vm ersetzt. $ El und aktualisiert wird aufgerufen, nachdem eine Datenänderung der virtuellen DOM verursacht werden wieder gerendert und gepatcht.

Verwandte Themen