2011-03-11 90 views
0

當我使用jqplot奇蹟般地注入情節到指定的div chart1:嵌入jqPlot進入ExtJS的面板

var chart1 = $.jqplot('chart1', weeks , {... 

同樣是ExtJS的真正的中注入所創建的代碼到「信息」 DIV:

var testPanel = new Ext.Panel({ 
    title: "Test", 
}); 
testPanel.render('info'); 

但是我怎樣才能將chart1繪製到面板中?以下HTML不起作用:

<div id="info">    
    <div id="chart1" class="plot" style="width:400px;height:260px;"></div> 
</div> 

而且把HTML到ExtJS的不起作用,因爲chart1的HTML爲空(在這一點上!?):

var testPanel = new Ext.Panel({ 
    title: "Test", 
    html: $('chart1').html() 
}); 
testPanel.render('info'); 

回答

1

您必須設置面板實例上的監聽器來監聽render事件,然後將您的圖表繪製到面板的主體上。

http://jsfiddle.net/chrisramakers/ZXDru/

Ext.onReady(function(){ 

    new Ext.Panel({ 
     renderTo: Ext.getBody(), 
     frame: true, 
     title: 'Test panel', 
     height: 250, 
     listeners: { 
      render: function(){ 

       // this.body.dom is the raw dom object of the body element of this panel 
       // render your plot to this.body.dom 
       console.log(this.body.dom) 
       this.body.update('This is the new content'); 
      } 
     } 
    }); 

}); 
+0

非常感謝您的快速答覆。現在我知道如何使extjs的時機正確。但我將不得不調查如何使jqplot在那裏繪圖。簡單的方法不起作用:var chart1 = $ .jqplot(this.body.dom,weeks,{ – Karussell 2011-03-11 14:04:52

+0

}如果您將繪圖函數綁定到將繪圖呈現到正文中的按鈕,則不要執行它的onload或呈現?這是否有效? – ChrisR 2011-03-11 14:12:00

+0

嗯,'chart1'的html代碼在'info'div(面板)下,但是圖表和麪板將單獨顯示(面板有一個沒有文本的按鈕,然後)。面板在圖表下方... – Karussell 2011-03-11 14:44:59