Функция из файла JS не запускается по индексу. js щелкните evt - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть функция с именем 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"/>

1 Ответ

1 голос
/ 18 апреля 2020

const calendar определено в области действия функции initComponent, но вы используете его вне того места, где оно не должно быть определено. Переместите ...addEventListener(...) в ту же область или сделайте инициализированный объект календаря доступным для области, в которой вы хотите его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...