JsInterop, упаковывающий свойство функции javascript

Я работаю с GWT 2.8, и я работаю над оболочкой для библиотеки JavaScript.

Одним из свойств класса JavaScript, который я пытаюсь обернуть, является функция. Я хотел бы, чтобы оболочка работала как можно ближе к нативному JavaScript. Как мне обернуть JsProperty, который является функцией javascript?

Подробности: класс javascript имеет свойство, которое является функцией, которая вызывается при срабатывании определенного события. Я хотел бы иметь возможность написать функцию labmda на Java и назначить ее этому свойству, которое затем будет запускаться в javascript.

1 ответ

Как сказал Адам (и объяснил более подробно в другом посте), вы можете предоставить @JsProperty с типом @JsFunction.

@JsType(isNative=true) public class Foo {
    @JsFunction public static interface BarFn {
        Object invoke(Object... args);
    }
    @JsProperty public BarFn bar;
}

Моя рекомендация изучить JsInterop - изучить другие проекты, такие как: обертка OpenLayers JsInterop, исходный код Elemental2 или изучить github. Elemental2 имеет весь API-интерфейс браузера, так что примеров здесь предостаточно, это действительно хорошее место для поиска примеров. Документация по JsInterop здесь.

Другие вопросы по тегам