0

GWT HighCharts チャートのエクスポート ボタンで、GWT メソッドを menuitem の onclick メソッドにフックするのに問題があります。

カスタム メニュー項目をエクスポート ボタンに追加できましたが、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!!!");
                }
            });
        }
    }
}

メニュー項目がチャートに追加される方法は次のとおりです。

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)});

編集3:

HighCharts JS ソース (exporting.js) では、menuitem の onclick メソッドが次のように呼び出されます。

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

apply が呼び出されると、次のエラーが発生します。

     [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 関数をオーバーライドしようとしましたが、まだ成功していません...

4

2 に答える 2

0

文字列の代わりにコマンドインターフェイスを渡す

Command sayHello = new Command() {
   public void execute() {
     Window.alert("Hello");
   }
 };
 sayHello.execute();
于 2013-02-25T08:38:48.630 に答える
0

イベント ハンドラーは HighCharts API のオプションとして含まれていませんが、単純な GWT を使用して、そのようなハンドラーをラッピング ウィジェットにアタッチできます。

widget.addClickHandler(new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {
        Window.alert("clicked!");
    }
});
于 2013-03-02T18:57:30.643 に答える