Ich erstelle eine Angular-App, die auf einigen Seiten fullpage.js verwendet. Derzeit initialisiere ich die ganze Seite (z. B. $('#this-routes-fullpage').fullpage({ options... })
) mithilfe einer benutzerdefinierten Direktive in der Vorlage für jede Route, auf der sie verwendet wird. Am Ende jeder dieser benutzerdefinierten Anweisungen rufe ich an
scope.$on('$routeChangeStart', function() {
$.fn.fullpage.destroy('all');
}
Dies funktioniert wie erwartet (das Plugin wird beim nächsten Auftreten zerstört und neu initialisiert), wenn ich von einer Seite, die das Plugin verwendet, zu einer anderen Seite navigiere, die es nicht verwendet, und dann zurück zu einer dritten Seite, die das Plugin verwendet nutzt es. Wenn dieser Zwischenschritt jedoch weggelassen wird und ich direkt von einer Route, die die ganze Seite verwendet, zu einer zweiten Route navigiere, die sie auch verwendet, wird das Plugin nicht richtig initialisiert. Damit meine ich, dass die Steuerung nicht funktioniert.
Dies lässt mich denken, dass es einen besseren Ort für mich gibt, um die Zerstörungsfunktion aufzurufen, die Angular-Ereignisse richtig ausnutzt. Kann mir jemand dabei helfen? Vielen Dank!
Jetzt können Sie die offizielle Angular-Komponente für fullPage.js verwenden .
Zerstören Sie es einfach, wann und wo immer Sie es initialisieren. Zum Beispiel kurz vor der Initialisierung:
//destroying
if (typeof $.fn.fullpage.destroy == 'function') {
$.fn.fullpage.destroy('all');
}
//initializing
$('#fullpage').fullpage();
Oder Sie können einfach überprüfen, ob es initialisiert wurde, bevor Sie die Klasse / das Flag überprüfen, die fullPage.js Ihrem HTML-Element hinzufügt (vorausgesetzt, dies wird in Ihren Ajax-Aufrufen nicht geändert).
//destroying
if($('html').hasClass('fp-enabled')){
$.fn.fullpage.destroy('all');
}
//initializing
$('#fullpage').fullpage();
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen