Как передать указатель на функцию javascript с помощью JSNI GWT? - PullRequest
3 голосов
/ 31 января 2011

Я использовал JSNI раньше, но мне никогда не приходилось передавать указатель на функцию в качестве параметра, используя его, и я не уверен, как это сделать.Любая помощь приветствуется!

Ответы [ 2 ]

5 голосов
/ 31 января 2011

Вы должны иметь возможность передать JavaScriptObject , представляющий объект функции JavaScript.Я не думаю, что вы можете сделать что-нибудь с функциями 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 голосов
/ 08 апреля 2015

В том же ключе, что и в ответе sinelaw, вот способ получить обратный вызов.

static final native JavaScriptObject createFunction(final Runnable runnable)
/*-{
    return function() {
        runnable.@java.lang.Runnable::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;
}-*/

Надеюсь, это поможет!

...