Ajax重绘组件停止加载Javascripts

时间:2012-04-02 16:04:05

标签: javascript ajax wicket

我有一个wicket表单 - 当我点击提交时 - 它显示了数据库中的动态表 - 我希望表可以排序 - 所以我使用了listview转发器和表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 个答案:

答案 0 :(得分:4)

这里真正的问题是sorttable.js(至少是我发现的版本)并非真正意图。你可以将javascript调用附加到Ajax调用的末尾。查看我的结果at github

基本上,您需要将它添加到重新加载ListView的AjaxSubmitLink中:

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

唯一剩下的问题是sorttable.js以某种方式阻止自己运行两次。所以我需要注释掉

if (arguments.callee.done)

检查init()函数。我对javascript的了解相当有限。如果您有更好的方法,请告诉我。

答案 1 :(得分:0)

我不确定100%,但我认为不可能重新加载此ajax调用中的javascript或由此触发的。

我会使用wicket框架提供的DefaultDataTable组件。它提供了对排序的构建支持。

答案 2 :(得分:0)

当你插入一些在文档就绪(jquery stuff)上执行的javascript时,你必须在对DOM应用更改时附加那些事件,你可以像bert告诉的那样做,或者覆盖名为renderHead的方法,

wathever wicket通过ajax实现了一个包含订单的表格,请参阅http://wicketstuff.org/wicket14/repeater/