我想在页面加载时检查数据。我还想在检查数据时放置加载指示器弹出窗口,以便用户知道该页面正在加载数据。
看看这段代码:
String item="";
@Override
public void prepareFromRequest(PlaceRequest request){
super.prepareFromRequest(request);
item=request.getParameter("item", "");
addToPopupSlot(loadingPresenter);
GetData action=new GetData(item);
dispatchAsync.execute(action, getDataCallback);
}
private AsyncCallback<GetDataResult> getDataCallback=new AsyncCallback<GetDataResult>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
loadingPresenter.hide();
}
@Override
public void onSuccess(GetDataResult result) {
// TODO Auto-generated method stub
loadingPresenter.hide();
//code to show data here
}
}
好的,这段代码在IE和Firefox中运行良好,但在Chrome中不行。那就是:
在Chrome中,刷新页面后,虽然所有数据都已正确显示,但指示器并未隐藏。在IE&amp; Firefox指标被正确隐藏。
我认为Chrome有问题,他们无法调用loadingPresenter.hide();
我该怎么办?我不认为我应该删除loadingPresenter
cos用户单击按钮时调用的getData
方法,所以我需要它来指示数据正在加载。但如果我使用loadingPresenter
,那么我无法在Chrome中运行。
那我该怎么办?
答案 0 :(得分:0)
我解决了这个问题,只是将callingMethod放在onReset中,然后它会很好cos的prepareFromRequest被调用得太早,以至于其他一些小部件还没有被绑定。导致问题的原因。这应该适用于所有浏览器。
String item="";
@Override
public void prepareFromRequest(PlaceRequest request){
super.prepareFromRequest(request);
item=request.getParameter("item", "");
}
@Override
public voi onReset{
super.onReset();
addToPopupSlot(loadingPresenter);
GetData action=new GetData(item);
dispatchAsync.execute(action, getDataCallback);
}