+ -
当前位置:首页 → 问答吧 → 有一段Extjs代码,在IE8下正常,火狐下有异常,请大家帮忙看看。

有一段Extjs代码,在IE8下正常,火狐下有异常,请大家帮忙看看。

时间:2011-04-15

来源:互联网

想实现点击一个按钮,从后台读取数据,显示一个pie图表,
然后再点这个按钮,隐藏pie图,再点再次读取数据显示。
主要代码如下,中间有省略。

pieChartPanel = function() {

this.refresh = function(dataUrl) {
if (typeof dataUrl == "string") {
store.proxy.conn.url = dataUrl;
store.load();
} else if (typeof dataUrl == "object") {
store.loadData(dataUrl, false);
}
this.show();
}
var store = new Ext.data.Store({
。。。。。。
pieChartPanel.superclass.constructor.call(this, {
。。。。。。
};
Ext.extend(pieChartPanel, Ext.Panel);

。。。。。。


btnShowChart = new Ext.Button({
text : '分析',
handler : function(){
if(pieChartPnl.hidden){
Ext.Ajax.request({
url : 'XXXX.do',
method : 'POST',
success : function(rsp, opt) {pieChartPnl.refresh(Ext.util.JSON.decode(rsp.responseText));},
failure : function(rsp, opt) {pieChartPnl.refresh('YYYY.do');}
});
btnShowChart.setText('隐藏');
}else{
pieChartPnl.hide();
btnShowChart.setText('分析');
}
},
。。。。。。

现在出现一个问题,在IE8下,一切正常。
在火狐下,第一次点按钮,能显示出来,再点,隐藏掉了,然后再点,图不出来了。
用firebug调试了一下,发现第一次点按钮,执行refresh函数时,能正常走完所有逻辑,
但之后再执行refresh函数时,store.loadData(dataUrl, false);这句执行完之后,就不继续执行this.show();了,
当然现在有解决方法,就是进到refresh函数里先执行this.show();,这样ie8,火狐都没问题了。
可是我想知道,为何在火狐浏览器下,按照我上面的代码,第二次执行refresh函数,store.loadData(dataUrl, false);之后的代码会不被执行呢?

作者: tennisboy0317   发布时间: 2011-04-15