У меня есть функция с именем handleFileSelect
, которая должна запускаться из события change
в моем файле index.js
(рекомендуется, чтобы все события находились в index.js
).
При вводе .addEventListener('change',
функция не отображается через intellisense (второй параметр после 'change'
). Я полагаю, что проблема связана с тем, как расположены компоненты, но я не уверен на 100%.
Я взял на себя этот проект и не был тем, кто устанавливал компоненты.
календарь. js:
import axios from "axios";
import XLSX from "xlsx";
import { route } from "silkrouter";
export default class {
constructor(globalData, mmUser) {
this.globalData = globalData,
this.isAdmin = mmUser.IsAdmin,
this.calendar = null;
}
initRoutes() { ... }
loadEvents(myParam) { ... }
parseAndUploadFile(file) {
let reader = new FileReader();
reader.onload = function(e) {
// in this block, I'm taking the contents of an uploaded Excel file and parsing it
}
}
addItemToList(getY, getZ) {
// in this block, the contents from parseAndUploadFile are added to a list via POST
}
handleFileSelect(evt) {
debugger;
console.log("handleFileSelect fired") // not reached
let files = evt.target.files;
if (files.length > 0) {
this.parseAndUploadFile(files[0]);
}
}
} // export default class
index. js:
import "jquery/dist/jquery.js";
import { router, route } from "silkrouter";
import globalInitProm from "./SiteAssets/scripts/global";
import calendarComponent from "./SiteAssets/scripts/calendar";
let isAdmin;
async function initComponents() {
isAdmin = await isAdminMember();
const { globalData, mmUser } = await globalInitProm(isAdmin);
const calendar = new calendarComponent(globalData, mmUser);
calendar.initRoutes();
}
initComponents();
/* various click evts are here */
document.getElementById('getFile').addEventListener('change', calendar.handleFileSelect, false); // intellisense can't find handleFS
HTML:
<input class="getFile" id="getFile" type="file" name="files[]" multiple="multiple"/>