Как передать указатель на функцию javascript с помощью GWT JSNI?

82
9

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

спросил(а) 2011-01-31T00:42:00+03:00 9 лет, 8 месяцев назад
1
Решение
99

Вы должны иметь возможность передать 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);
}-*/

По общему признанию, я не пробовал этот код, но считаю, что он должен работать.

ответил(а) 2011-01-31T01:12:00+03:00 9 лет, 8 месяцев назад
70

По тем же линиям, что и в случае с 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;
}-*/

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


ответил(а) 2015-04-08T20:17:00+03:00 5 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема