【问题标题】:Gwt elemental2: How can I convert between a gwt JavaScript object, and a JsInterop object?Gwt elemental2:如何在 gwt JavaScript 对象和 JsInterop 对象之间进行转换?
【发布时间】:2018-03-22 18:13:23
【问题描述】:

假设我有一个com.google.gwt.dom.client.Document gwtDocument 节点,我想将其转换为elemental2.dom.Document

由于 Document 扩展了 JavaScriptObject,我认为我可以执行以下操作:

elemental2.dom.Document elementalDoc = (elemental2.dom.Document)(gwtDocument);

但是使用 jsinterop 的 elemental2 类不扩展 JavaScriptObject。那么如何在两者之间进行转换呢?

谢谢!

【问题讨论】:

    标签: gwt gwt-jsinterop gwt-elemental


    【解决方案1】:

    您可以先转换为对象,然后再转换为元素类型 (1)。这有点难看,所以有一个可以在 GWT 和 J2CL 中使用的实用程序库,称为jsinterop-baseJs 实用程序可用于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.castGWT dom 实例转换为elemental2 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2012-02-05
      • 2023-04-05
      • 2013-05-20
      • 1970-01-01
      相关资源
      最近更新 更多