我正在使用GWT 2.8,我正在开发一个javascript库的包装器。
我想要包装的javascript类的一个属性是一个函数。我希望包装器尽可能地与本机javascript一起工作。如何包装JsProperty是一个javascript函数?
详细说明: javascript类有一个属性,该属性是在触发特定事件时调用的函数。我希望能够在Java中编写labmda函数,并将其分配给此属性,然后该属性将在javascript中运行。
答案 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 wrapper,Elemental2 source code或explore github。 Elemental2拥有整个浏览器API,所以有很多例子,这是一个找到例子的好地方。 JsInterop文档here。