Вечер всех,
У меня небольшая проблема - похоже, JS Проблема загрузки функции. В основном я получаю ReferenceError: reOrderMapLayers не определено сообщение, когда я вызываю функцию из одного файла JS в другой.
Я запускаю OpenLayers после установки из NPM ( OpenLayers-семинар). Он поставляется со всем необходимым для создания приложений OpenLayers и включает в себя несколько пакетов. json файлов, которые имеют дело с загрузкой необходимого индекса. html, main. js файлов.
Что я сделал, так это оставить основной файл. js исключительно связанным с загрузкой / управлением слоями OpenLayers и соответствующими функциями. Я установил еще один JS файл в той же папке, который называется instance. js, который обрабатывает перетаскивание списка.
Файл index. html загружает файлы JS в следующем порядке:
- interface. js
- jquery -3.4.1 . js
- main. js
Main. js всегда находится в конце загрузки - похоже, он загружает файлы JS из html документ первым.
Но, когда я пытаюсь вызвать функцию, созданную мной в главном файле. js после функции события драже (в интерфейсе. js), я получаю эту справочную ошибку. По сути, он не может найти функцию при запуске внутри интерфейса. js ...
Что я пробовал:
- Переупорядочить файлы JS так интерфейс. js импортируется в основной скрипт. js. Сгенерировано загружает больше ошибок для функций события перетаскивания
- Переместите все функции JS из интерфейса. js в главное. js и удалите интерфейс. js Файл: генерирует то же событие перетаскивания ошибки.
- Я попытался экспортировать соответствующие основные функции. js функции в интерфейс. js: не повезло, та же ошибка ...
- Я попытался сослаться на главную Файл js в документе html: тоже не повезло, так как он ошибается в функциях события перетаскивания.
Это правильная боль ... Кажется, я не могу понять, почему он жалуется ... все файлы JS загружаются, прежде чем я сделаю перестановку списков.
Вот моя функция драгендинга (из интерфейса. js), которая вызывает функцию в main . js:
function dragEnd() {
selected = null;
t_layerOrder = [];
var layerOrder = $("#layersort li");
layerOrder.each(function () {
t_layerOrder.push(($(this).children().first().attr("name")));
});
console.log(reOrderMapLayers(t_layerOrder));
}
И в основном файле. js у меня есть это:
function reOrderMapLayers(i_layerOrder)
{
console.log(i_layerOrder);
}
Буквально все, что я делаю, пытается передать переупорядоченный список в виде массива для функции в main. js, поэтому я могу изменить порядок слоев карты.
Я хочу попробовать разделить функциональность JS на основе OpenLayer, GUI и, в конечном итоге, API, так что это не все в одном большом файле.
Я надеюсь, что это глупо просто, но это первый экземпляр приложения, я пытаюсь вызвать функции из других JS файлов ...
Cheers, B