Gwt elemental2:如何在 gwt JavaScript 对象和 JsInterop 对象之间进行转换?
Gwt elemental2: How can I convert between a gwt JavaScript object, and a JsInterop object?
假设我有一个 com.google.gwt.dom.client.Document gwtDocument
节点,我想将其转换为 elemental2.dom.Document
?
由于 Document 扩展了 JavaScriptObject,我假设我可以做类似的事情:
elemental2.dom.Document elementalDoc = (elemental2.dom.Document)(gwtDocument);
但是使用 jsinterop 的 elemental2 类 不扩展 JavaScriptObject。那么如何在两者之间转换呢?
谢谢!
您可以先转换为对象,然后再转换为元素类型(1)。这有点难看,所以有一个可以在 GWT 和 J2CL 中使用的实用程序库,叫做 jsinterop-base。 Js
实用程序可用于 cast
(2) 和 uncheckedCast
(3) 任何对象。 uncheckedCast
应该避免,只有当你知道自己在做什么时才使用(例如在 iframe 之间转换,或其他特殊的 js 情况)。
com.google.gwt.dom.client.Document gwtDocument = Document.get();
elemental2.dom.Document el1 = (elemental2.dom.Document) (Object) gwtDocument; //(1)
elemental2.dom.Document el2 = jsinterop.base.Js.cast(gwtDocument); //(2)
elemental2.dom.Document el3 = jsinterop.base.Js.uncheckedCast(gwtDocument); //(3)
因此在客户端代码中,您应该使用 Js.cast
将 GWT
dom 个实例转换为 elemental2
个实例。
假设我有一个 com.google.gwt.dom.client.Document gwtDocument
节点,我想将其转换为 elemental2.dom.Document
?
由于 Document 扩展了 JavaScriptObject,我假设我可以做类似的事情:
elemental2.dom.Document elementalDoc = (elemental2.dom.Document)(gwtDocument);
但是使用 jsinterop 的 elemental2 类 不扩展 JavaScriptObject。那么如何在两者之间转换呢?
谢谢!
您可以先转换为对象,然后再转换为元素类型(1)。这有点难看,所以有一个可以在 GWT 和 J2CL 中使用的实用程序库,叫做 jsinterop-base。 Js
实用程序可用于 cast
(2) 和 uncheckedCast
(3) 任何对象。 uncheckedCast
应该避免,只有当你知道自己在做什么时才使用(例如在 iframe 之间转换,或其他特殊的 js 情况)。
com.google.gwt.dom.client.Document gwtDocument = Document.get();
elemental2.dom.Document el1 = (elemental2.dom.Document) (Object) gwtDocument; //(1)
elemental2.dom.Document el2 = jsinterop.base.Js.cast(gwtDocument); //(2)
elemental2.dom.Document el3 = jsinterop.base.Js.uncheckedCast(gwtDocument); //(3)
因此在客户端代码中,您应该使用 Js.cast
将 GWT
dom 个实例转换为 elemental2
个实例。