Компонент перерисовки Ajax перестает загружать Javascripts - PullRequest
1 голос
/ 02 апреля 2012

У меня есть форма калитки - когда я нажимаю кнопку Отправить - она ​​показывает мне динамическую таблицу из базы данных - Я хочу, чтобы таблица была сортируемой - поэтому я использовал репитер списка и таблицу sorttable.js чтобы можно было отсортировать таблицу.

Теперь, когда я обновляю страницу - у меня есть возможность сортировки - но когда я нажимаю кнопку отправить - я не могу отсортировать таблицу

       wmc.add(new AttributeAppender("class", new Model("sorttable"), ";"));
       wmc.add(new AttributeAppender("onclick", new Model("sorttable()"), ";"));

       <table class="sortable" wicket:id="someContainer">

Есть ли способ - где я могу перезагрузить свой sorttable.js - пока перерисовка ajax завершена?

Ответы [ 3 ]

4 голосов
/ 03 апреля 2012

Настоящая проблема здесь в том, что sorttable.js (по крайней мере, версия, которую я нашел) на самом деле не предназначена для этого.Вы можете прикрепить вызовы JavaScript к концу вызова Ajax.Смотрите мой результат на github .

. В основном вам нужно добавить это к AjaxSubmitLink, который перезагружает ListView:

target.appendJavaScript("sorttable.init();");

Единственная оставшаяся проблема - это сортируемая.JS почему-то не позволяет запустить себя дважды.Поэтому мне нужно было закомментировать проверку

if (arguments.callee.done)

в функции init ().Мои знания JavaScript довольно ограничены.Если вы знаете лучший способ, пожалуйста, дайте мне знать.

0 голосов
/ 03 апреля 2012

когда вы вставляете какой-то javascript, который выполняется в готовом документе (jquery), вы должны повторно присоединять эти события, когда применяете изменения к вашему DOM, вы можете сделать это, как сказал Берт, или перезаписать метод с именем renderHead * * 1003

в зависимости от того, как калитка реализует таблицу с заказом через ajax, см. http://wicketstuff.org/wicket14/repeater/

0 голосов
/ 02 апреля 2012

Я не уверен на 100%, но я думаю, что невозможно также перезагрузить javascript внутри или с помощью этого вызова ajax.

Я бы использовал компонент DefaultDataTable, предоставляемый платформой wicket.Он поставляется с поддержкой сборки для сортировки.

...