Ich habe ein es6 Modul wie folgt definiert:Mit ZURB Foundation 6 Javascript mit jspm
import 'zurb/foundation/js/foundation.core';
import 'zurb/foundation/js/foundation.util.mediaQuery';
import 'zurb/foundation/js/foundation.dropdown';
import 'zurb/foundation/js/foundation.reveal';
import 'zurb/foundation/js/foundation.tabs';
import modalFactory from './modal';
import revealCloseFactory from './reveal-close';
export default function ($element) {
debugger;
$element.foundation();
}
Wie Sie sehen können, ein Haltepunkt dort nach oben hin von der Standard-Exportfunktion ist.
Ich benutze dieses Modul dann in einer Datei wie folgt aus:
import $ from 'jquery';
import foundation from './global/foundation';
export default class Global extends PageManager {
loaded(next) {
foundation($(document));
next();
}
}
Wenn dies ausgeführt wird, erhalte ich eine Fehlermeldung, dass $element.foundation
keine Funktion ist. Mit der Anweisung debugger
kann ich den aktuellen Bereich überprüfen, wenn die Ausführung angehalten wird. Ich kann bestätigen, dass $element
keine foundation()
Methode hat. Ich bin mir nicht sicher, warum dies der Fall ist, da Foundation am Anfang der Datei importiert wurde.
Auch wenn die Ausführung pausiert, auf der js-Konsole, wenn ich tun $(document).foundation()
, funktioniert es, und Stiftung ist in der Tat eine Funktion. Außerdem gibt $element.is($(document))
true
zurück.
Warum sollte die Methode foundation
unter $(document)
und nicht $element
verfügbar sein? Wenn ich die Zeile von foundation($(document))
zu foundation(jQuery(document))
ändere, funktioniert es auch. Ich kann auch sehen, dass $.fn.foundation
nicht existiert, aber jQuery.fn.foundation
tut, wenn ich einen Haltepunkt direkt vor dieser Zeile setzen.
Was geht hier vor?
Das macht Sinn, aber ich habe Probleme zu sehen, ob es für meine Situation gilt. Das jQuery-Objekt wird im zweiten Code-Snippet generiert, das 'jquery' und dann' foundation' am Anfang der Datei importiert. Bedeutet das nicht, dass die "Foundation" -Funktion verfügbar sein sollte? – flyingL123
Bitte überprüfen Sie meine zusätzlichen Informationen zu der Frage. Es sieht so aus, als hätte 'jQuery' die Methode' foundation', aber '$' nicht. – flyingL123