Инструментарий Agile — как загружается atk4_form.js?

Я использую Agile Toolkit версии 4.2. Я использую функцию javascript, которая создает модальное окно (всплывающее окно), и содержимое вставляется с помощью вызова ajax. Содержимое было вставлено с помощью функции jquery ".html()", но в случае больших данных эта функция работает очень медленно.

Я заменил эту функцию простой функцией javascript ".innerHTML".

Но теперь atk4_form.js больше не загружается, и я не знаю, почему. Есть ли какой-нибудь хук в функции jquery "html()"? Все события содержимого вызываются, когда я использую «html», но ни одно из них не вызывается, когда я использую «innerHTML».

Я знаю, что класс «Form_Basic» загружает atk4_form.js в функцию «рендеринга». Но должен быть какой-то хук для рендеринга, который также указывает на функции jquery «html» или «append».

Любая идея, как я могу загрузить базовые функции atk4, когда я использую функцию javascript "innerHTML"?


person Pascut    schedule 03.05.2017    source источник


Ответы (1)


Вам нужно найти тег внутри ответа сервера и выполнить его в контексте элемента, вызвавшего событие открытия окна. Если вы не делаете ничего необычного, просто выполните eval() блок(ы).

загрузчик был написан довольно давно, см. файл start-atk4.js.

JavaScript заключен внутри $.atk4(function(){ .. });, что похоже на $(function() { }); но немного расширен.

Скорее всего выполнение выполняется через ui.atk4_loader .js, который представляет собой виджет пользовательского интерфейса jQuery, предназначенный для безопасной загрузки областей страницы.

Чтобы ответить на ваш вопрос, вы должны скопировать и изменить этот файл здесь:

https://github.com/atk4/atk4/blob/develop/public/atk4/js/ui.atk4_loader.js#L201

person romaninsh    schedule 03.05.2017
comment
Спасибо, моя длина данных составляет 800 000, а время загрузки html jqyery занимает 6 секунд, а innerHTML javascript - 0,41 секунды. Кто хочет ждать появления всплывающего окна более 7 секунд? - person Pascut; 03.05.2017
comment
Тогда это неправильно по дизайну вашей страницы. Бесполезно показывать такую ​​большую таблицу данных клиенту без пагинатора. InnerHTML, безусловно, быстрее, но, насколько я знаю, он не будет запускать скрипты и делать все те причудливые вещи, которые делает jQuery html(). - person DarkSide; 03.05.2017
comment
Также вам следует проверить ATK версии 4.3 и новые github.com/atk4/ui и github.com/atk4/data :) - person DarkSide; 03.05.2017
comment
@Pascut, возможно, использование современной версии jQuery позволило бы оптимизировать метод html(), я не уверен, почему это занимает так много времени. В любом случае - если вам удастся заставить скрипты работать нормально, поделитесь, пожалуйста :) - person romaninsh; 03.05.2017