2011-01-30 45 views

回答

5

您应该能够传递代表JavaScript函数对象的JavaScriptObject。不过,我认为你不能对Java功能做任何事情。因此,举例来说,您可以:

final native JavaScriptObjet myFuncCreator() /*-{ 
    return function (x, y) { return y - x; }; 
}-*/ 

final native int myFuncUser(JavaScriptObject funcObj, int a, int b) /*-{ 
    return funcObj(a,b); 
}-*/ 

无可否认,我没有尝试此代码,但我相信它应该可以工作。

2

与sinelaw的回答一样,这里有一个获得回调的方法。

static final native JavaScriptObject createFunction(final Runnable runnable) 
/*-{ 
    return function() { 
     [email protected]::run()(); 
    } 
}-*/ 

static final void registerOnClickCallback(Element element, final Runnable runnable) { 
    JavaScriptObject callback = createFunction(runnable); 
    _registerOnClickCallback(element, callback); 
} 

static final native void _registerOnClickCallback(Element element, JavaScriptObject callback) 
/*-{ 
    element.onclick = callback; 
}-*/ 

希望这有助于!