1

この JavaScript スニペットと同等の JSNI 呼び出しを作成しようとしています。

jQuery(function($) {
    $('#target').Jcrop();
});

ライブラリを正しくインポートしたと思いますが、JSNI からこの関数を呼び出すときに正しい構文を取得できないようです。次の方法を使用する場合:

public static final native void initializeJCrop() /*-{
    $wnd.jQuery(function($) {
        $('#target').Jcrop();
    });
}-*/;

次の例外がスローされます。

原因: com.google.gwt.core.client.JavaScriptException: (TypeError): $("#target").Jcrop は関数ではありません

どうすればこれを修正できますか?

4

1 に答える 1

-2

JSNI を使用して外部関数を呼び出すための構文は、単純な JavaScript とは少し異なります。

呼び出される関数のパラメーターのタイプ/クラスとともに、完全なパッケージ/クラス参照を提供する必要があります (あなたのものにはパラメーターがないので、心配する必要はありませ)が定義されています。JCrop を定義するクラスの場所が「api.jcrop」であるとします。

次に、あなたの呼び出しは

    @api.jcrop::JCrop()() 

JCrop() の代わりに

もちろん、パッケージ名は架空のものであり、定義を含むクラスの正しい場所を確認する必要があります。

記号 @ は必須です。jcrop は定義を含むクラスで、JCrop() は関数自体です。

JCrop の後の最初の括弧は関数のパラメーターの型を示し、2 番目の括弧は渡されたパラメーターの値を提供します。私が言ったように、あなたの場合は両方とも空です。

興味がある場合は、ここでパラメーターの詳細を読むことができます

これで問題が解決することを願っています

于 2012-05-15T14:35:57.210 に答える