在GWT Cell Table中我使用JSNI包装jquery功能(如分组)。但它抛出JavaScriptObject异常(函数是未定义的)。我在加载数据后调用这个JSNI方法
table.setRowData(loadContactInfo()); //To Load Data
loadGridData(); //Calling JSNI For Grouping
private List<ContactInfor> loadContactInfo() {
// To load data
List<ContactInfor> lstContact = new ArrayList<ContactInfor>();
lstContact.add(new ContactInfor("XXX", "YYY", "t", "26", "0300",Big Street"));
return ContactInfor;
}
public static native void loadGridData()/*-{
//calling js for grouping functionality which contains table tr element
}-*/;
由于它需要花费几毫秒来重新绘制单元格表,然后调用JSNI方法抛出JSO异常。在数据加载和渲染后,还有其他任何东西将JS封装到Cell表中吗?对此有何建议?
答案 0 :(得分:0)
上面的代码中只有很少的信息,但是如果您的问题是由于重绘和jquery之间的时间问题,您可能需要使用Scheduler.get().scheduleDeferred()
命令让浏览器执行它的工作在你再次更换dom之前。
http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/client/Scheduler.html
答案 1 :(得分:0)
感谢您的回复,我使用了&#34; flush()&#34;加载数据后的语句见下面的代码
table.setRowData(loadContactInfo());
**table.flush(); //flush force to render immediately**
loadGridData();
private List<ContactInfor> loadContactInfo() {
// To load data
List<ContactInfor> lstContact = new ArrayList<ContactInfor>();
lstContact.add(new ContactInfor("XXX", "YYY", "t", "26", "0300",Big Street"));
return ContactInfor;
}
public static native void loadGridData()/*-{
//calling js for grouping functionality which contains table tr element
}-*/;
并且还可以使用Scheduler.get()。scheduleDeferred()来添加延迟。