Невозможно получить доступ к окну ["var_name"] через Webpack Encore - PullRequest
0 голосов
/ 07 июня 2019

На основе приведенного ниже кода у меня есть переменная mdcDialog, которая инициализируется библиотекой material-components-web (MDCDialog) после загрузки страницы.

При отправке формы событие по умолчанию предотвращается, и вместо этого ajaxSubmit() обрабатывает форму.
Ответ является объектом json, из которого я могу найти переменную response.modal.modal со строковым значением mdcDialog.

Но по той или иной причине console.info(window[response.modal.modal]); возвращает ноль вместо переменной mdcDialog.

Как я могу получить доступ к моей переменной mdcDialog из строкового ответа, если window не работает?

app.js

/* --- VARS --- */
const page="#page";
let mdcDialog;

/* --- FUNCTIONS --- */
function ajaxSubmit(node) {
    $.ajax({
        type: node.attr("method"),
        url: node.attr("action"),
        enctype: "multipart/form-data",
        data: new FormData(node[0]),
        processData: false,
        contentType: false,
        cache: false
    }).done(function(response, status, xhr) {
        if(response !== false) {
            /** @var response.modal */
            if(typeof response.modal !== "undefined") {
                /** @var response.modal.action */
                /** @var response.modal.modal */
                /** @var response.modal.content */
                if(response.modal.action === "load") {
                    console.info(window[response.modal.modal]);
                }
            }
        }

    }).fail(function(request, status, error) {
        console.error(request);
        console.error(status);
        console.error(error);
    });
}

/* --- ACTIONS --- */
$(document).ready(function() {
    mdcDialog=new mdc.dialog.MDCDialog(document.querySelector("#dialog-level.mdc-dialog"));

    $(page).on("submit", ".ajs", function(e) {
        e.preventDefault();
        ajaxSubmit($(this));
    })
});
...