2014-07-05 52 views
1

我正在嘗試使用外部JavaScript文件創建一個用於GWT項目的PieChart小部件。 如何從本地函數GWT中的外部js庫中獲取類實例?GWT - 原生js圖表

public class PieChart implements IsWidget{ 

    Canvas c; 

    public PieChart() { 
     c = Canvas.createIfSupported(); 

     init(c.getElement()); 

    } 

    private native void init(Element e) /*-{ 
      var data = []; 
      var ctx = e.getContext("2d"); 
      var myNewChart = new Chart(ctx); 
      myNewChart.Doughnut(data,{animateScale: true}); 
    }-*/; 

    private native void add(PieChartData p) /*-{ 
    var data = [{ 
     value: p.value, 
     color: p.color, 
     hightlight: p.hightlight, 
     label: p.label 
    }]; 

    myNewChart.addData(data); // <-- null 
}-*/; 

    @Override 
    public Widget asWidget() { 
     return c; 
    } 

} 

我在爲圖表添加值時遇到問題。 請幫幫我。謝謝。


我想創建一個類PieChart作爲使用GWT中的Canvas的小部件,並且可以使用圖表。使用班級PieChart:

AbsolutePanel panel = new AbsolutePanel(); 

    PieChart p = new PieChart(); 
    panel.add(p); 

顯示編譯項目 - 圖表。 我想動態地將數據添加到圖表。我不知道該如何做,以原生js初始化對象,並在其他方法中使用它。 對變量myNewChart的引用顯示錯誤 - NullPointer,因爲myNewChart變量未初始化。

我會以這種方式添加數據:

AbsolutePanel panel = new AbsolutePanel(); 

    PieChart p = new PieChart(); 
    panel.add(p); 
    p.add(data); 

我不知道該怎麼做;/

到底要在GWT創建我可以使用圖表類,使用外部js文件從這個網頁:http://www.chartjs.org/docs/

+0

更換

var myNewChart = new Chart(ctx); 

初始化它在你的init方法可能有幫助,如果你能具體什麼您遇到的問題,例如您期望看到的與您實際看到的內容。 –

+0

我已添加其他信息。 –

回答

0

我想「// < - null」是你有問題的地方?!

嘗試保持對創建的圖表對象的引用。

在類

JavaScriptObject myNewChart; 

創建一個部件上,通過

[email protected]::myNewChart = new Chart(ctx); 
+0

我不知道如何保持參考。有用。謝謝! –