我正在使用 GWT 2.8,并且正在开发一个 javascript 库的包装器。
我试图包装的 javascript 类的属性之一是函数。我希望包装器尽可能地与本机 javascript 工作。如何包装作为 javascript 函数的 JsProperty?
详细信息:javascript 类有一个属性,该属性是一个在触发特定事件时调用的函数。我希望能够用 Java 编写一个 labmda 函数,并将其分配给这个属性,然后它将在 javascript 中运行。
我正在使用 GWT 2.8,并且正在开发一个 javascript 库的包装器。
我试图包装的 javascript 类的属性之一是函数。我希望包装器尽可能地与本机 javascript 工作。如何包装作为 javascript 函数的 JsProperty?
详细信息:javascript 类有一个属性,该属性是一个在触发特定事件时调用的函数。我希望能够用 Java 编写一个 labmda 函数,并将其分配给这个属性,然后它将在 javascript 中运行。
正如亚当所说(并在另一篇文章中更详细地解释),您可以使用 @JsFunction 类型公开 @JsProperty。
@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 文档在这里。