от
Я работаю с JavaScript, JQuery и QueryBuilder для первого профессионально время. Я был назначен для устранения проблемы с сообщением об ошибке, которое я отследил в следующем фрагменте кода.
_initializeQueryBuilder: function(_this, serviceDiv, filtersArray, importQuery) {
                $(function() {
                    // Select correct div by service name
                    $('#'   serviceDiv).queryBuilder({
                        filters: filtersArray
                    });
                    _this._enableInputs();
                });

                if (importQuery !== undefined) {
                    try {
                        $('#'   serviceDiv).queryBuilder('setRulesFromSQL', importQuery);
                    } catch (e) {
                        new Message({
                            titleLabel: "Error",
                            message: "Query cannot be loaded for this service. Query fields are missing from site's service."
                        });
                    }
                }
            }
В $(функция()) код блока, как я понимаю, предполагается установить фильтры, прежде чем оператор if выполняет. Если этот блок кода выполняется, однако, попробовать-блок catch перехватывает ошибку и выводит сообщение
Query cannot be loaded for this service. Query fields are missing from site's service.
это жестко сообщение об ошибке, и точно не Экспресс-ошибку, которая возникает. Когда я напечатал
e
ошибка, что на самом деле в плен, я обнаружил, что реальная ошибка это:
ConfigError: Missing filters list
. Я сделал некоторые испытания, чтобы подтвердить, что filtersArray вклад в _initializeQueryBuilder (функция) правильно, и насколько я могу сказать, оператор присваивания
filters: filtersArray
похоже на другие примеры, которые я нашел. То, что я обнаружил, что по некоторым причинам, если-оператор выполняется до $(функция()) блок кода выполняется. Интуитивно я предполагаю, что $(функция()) блок кода будет выполняться, во-первых, установка фильтров, а затем оператор if будет выполняться, но тестирование подтверждает, что это не так. Так что, проблема как я понимаю заключается в том, что если-заявление-это попытка выполнить перед фильтрами были установлены, и когда это произойдет, попробовать-блок catch ловит ошибку фильтров, поскольку фильтры не определено. Я подтвердил с тестированием, что, когда оператор if выполняет, checkFilters() функция определяет неопределенный фильтров переменной и выводит сообщение я получаю. Тем не менее, когда $(функция()) блок кода выполняется, фильтры, кажется, успешно. Я предполагаю, что если я могу манипулировать этот блок кода, такие, что $(функция()) код блока выполняется перед Если-заявление, что эта проблема исчезнет. Будет ли этот вопрос решаться, если я могу заставить $(функция()) блок кода, выполняемый перед Если-заявление? Почему $(функция()) блок кода не выполняется, прежде чем оператор if выполняет? Как я могу заставить $(функция()) блок кода, выполняемый перед Если-заявление? Заранее спасибо за помощь мне понять некоторые тонкости JavaScript, как это, кажется, что я упускаю!

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
...