2013-02-25 57 views
0

我在GWT HighCharts圖表上的導出按鈕中遇到了將GWT方法掛鉤到menuitem的onclick方法的問題。Http GWT方法導出GWT HighCharts中的按鈕menuitem

我已成功將自定義菜單項添加到導出按鈕,但不知道設置onclick方法的語法。我已經試過:

setOption("onclick", "window.alert('Test')"); 

setOption("onclick", "function() { window.alert('Test') }"); 

,但我得到了以下錯誤:

Uncaught JavaScript exception [TypeError: a.onclick.apply is not a function]... 

因此,它正試圖調用任何林在onclick串推杆,但顯然這不是我正在使用的正確語法。我一直在考慮JSNI,但我不完全確定我會如何去做並做到這一點。誰能幫忙?

編輯:

顯然,在上面的例子中,我試着去展現一個JavaScript警告,但我想如果可能的話調用GWT實例方法。 (靜態方法也可以)。

編輯2:

這是我在導出按鈕菜單項的代碼:

private class ExportButtonMenuItem extends Configurable<ExportButtonMenuItem> { 

    public ExportButtonMenuItem(String name, String type) { 
     setOption("text", name); 

     if (type.equalsIgnoreCase(EXPORT_EXCEL)) { 
      // setOption("onclick", "window.alert('Test')"); 

      // does not work! 
      setOption("onclick", new Command() { 
       @Override 
       public void execute() { 
        GWT.log("export!!!"); 
       } 
      }); 
     } 
    } 
} 

,這是菜單項(S)是如何被添加到圖表:

chart.setOption("/exporting/buttons/exportButton/menuItems", 
    new ExportButtonMenuItem[] { 
     new ExportButtonMenuItem("Download PNG", ExportButtonMenuItem.EXPORT_PNG), 
     new ExportButtonMenuItem("Download JPEG", ExportButtonMenuItem.EXPORT_JPEG), 
     new ExportButtonMenuItem("Download PDF", ExportButtonMenuItem.EXPORT_PDF), 
     new ExportButtonMenuItem("Download SVG", ExportButtonMenuItem.EXPORT_SVG), 
     new ExportButtonMenuItem("Download Excel", ExportButtonMenuItem.EXPORT_EXCEL)}); 

EDIT 3:

在HighCharts JS源(exporting.js),對於菜單項的onclick方法的調用是這樣的:

div[hasTouch ? 'ontouchstart' : 'onclick'] = function() { 
    hide(); 
    item.onclick.apply(chart, arguments); 
}; 

當應用被啓動時,我得到這個錯誤:

 [java] Uncaught JavaScript exception [TypeError: item.onclick.apply is not a function] in http://127.0.0.1:8888/js/modules/exporting.src.js, line 467 

我有一直試圖重寫的onclick功能,但仍然沒有成功...

回答

0

Command接口,而不是字符串的

Command sayHello = new Command() { 
    public void execute() { 
    Window.alert("Hello"); 
    } 
}; 
sayHello.execute(); 
+0

它似乎並不該HighCharts API與此接口兼容。我試過使用它,但現在我得到一個javascript異常,說onclick方法沒有定義。我已將我的代碼添加到原始帖子中... – 2013-02-25 09:10:13

0

的事件處理程序未包括在如HighCharts API選項,但你完全可以使用純GWT這樣的處理程序附加到包裝部件:

widget.addClickHandler(new ClickHandler() { 

    @Override 
    public void onClick(ClickEvent event) { 
     Window.alert("clicked!"); 
    } 
});