JsInterop包装一个javascript函数属性

时间:2017-08-15 18:27:16

标签: javascript gwt wrapper gwt-jsinterop

我正在使用GWT 2.8,我正在开发一个javascript库的包装器。

我想要包装的javascript类的一个属性是一个函数。我希望包装器尽可能地与本机javascript一起工作。如何包装JsProperty是一个javascript函数?

详细说明: javascript类有一个属性,该属性是在触发特定事件时调用的函数。我希望能够在Java中编写labmda函数,并将其分配给此属性,然后该属性将在javascript中运行。

1 个答案:

答案 0 :(得分:3)

正如Adam所说(并在另一篇文章中有更详细的解释),你可以使用@JsFunction类型公开@JsProperty。

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

我对学习JsInterop的建议是探索其他项目,例如:OpenLayers JsInterop wrapperElemental2 source codeexplore github。 Elemental2拥有整个浏览器API,所以有很多例子,这是一个找到例子的好地方。 JsInterop文档here