4

GWT で JSNI からJavaScript関数を返すにはどうすればよいですか? 私は次の方法でそれを試しました:

/* JSNI method returning a js-function */
public static native JavaScriptObject native_getFunction() /*-{
    return function(a,b){
        //do some stuff with a,b
    }
}-*/;

関数を変数に格納する

/* outside from GWT: store the function in a variable */
JavaScriptObject myFunction = native_getFunction();

後で関数を使用すると、次のエラー メッセージが生成されます。

(TypeError): object is not a function

誰かがこの問題を解決する方法を知っていますか?

4

2 に答える 2

6

これは私にとってはうまくいきます。次のメソッドを宣言します。

public static native JavaScriptObject native_getFunction() /*-{
    return function(a,b){
        //do some stuff with a,b
    }
}-*/;

private native void invoke(JavaScriptObject func)/*-{
    func("a", "b");
}-*/;

そして、これらのメソッドを次のように使用します。

JavaScriptObject func = native_getFunction();
invoke(func);
于 2013-02-05T18:38:01.563 に答える
0

あなたappName.nochache.js(GWT) を 考慮しましょうHomepage.html

homepage.html

<script>
    function printMyName(name) {
        alert("Hello from JavaScript, " + name);
    }
    </script>

あなたの Gwt で:

Gwt ソース内で、JSNI を介して sayHello() JS 関数にアクセスできます。

native void printMyNameInGwt(String name) /*-{
  $wnd.printMyName(name); // $wnd is a JSNI synonym for 'window'
}-*/;

それらを変数に割り当てることもできます

native void printMyNameInGwt(String name) /*-{
  var myname =$wnd.printMyName(name); // return that for your purposes
}-*/;

<script> 注:HTMLページにタグを追加する必要がある外部ファイルのjsメソッドを呼び出す場合...

于 2013-02-05T19:01:43.073 に答える