首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Javascript类转换为ScalaJS

如何将Javascript类转换为ScalaJS
EN

Stack Overflow用户
提问于 2020-11-08 16:21:00
回答 1查看 137关注 0票数 1

我有一个简单的Javascript代码:

代码语言:javascript
复制
import Modeler from 'bpmn-js/lib/Modeler';

import diagramXML from './diagram.bpmn';

const modeler = new Modeler({
  container: '#canvas'
});

modeler.importXML(diagramXML);

这将在浏览器中打开时显示一个图表。

我想在ScalaJS中这样做,但我错过了一些东西。

这是我的代码:

代码语言:javascript
复制
@JSImport("resources/diagram.bpmn", JSImport.Default)
@js.native
object DiagramXML extends js.Object

object Main {

  @JSExportTopLevel("main")
  def main(): Unit = {
    val modeler = new Modeler(js.Object(
      "container" -> "#canvas"
    ))

   modeler.importXML(DiagramXML.toString)
 }
}

这是我的Modeler立面

代码语言:javascript
复制
@js.native
@JSImport("bpmn-js/lib/Modeler", "Modeler")
class BpmnJS(options: js.Object) extends js.Object {

  def importXML(xml: String): js.Promise[Any] = js.native

}

调试时,xml将正确加载。所缺少的就是它在DOM中被正确地呈现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-08 17:39:38

我可以在你的翻译中发现两个问题。第一个是import of bpmn-js。JS导入是

代码语言:javascript
复制
import Modeler from 'bpmn-js/lib/Modeler';

应该翻译成

代码语言:javascript
复制
@JSImport("bpmn-js/lib/Modeler", JSImport.Default)

根据the documentation on translating import into @JSImport的说法。

另一个问题则更为微妙。在调用new Modeler时,您已经

代码语言:javascript
复制
js.Object(
  "container" -> "#canvas"
)

它(可能是不幸的)编译,但不做您认为它所做的。它创建两个字符串的Scala,并将其传递给JavaScript函数Object(...),后者实际上将按原样返回它(因为Scala已经是一个对象)。

您想要的是一个带有字段containercontainer对象,您可以将其编写为

代码语言:javascript
复制
new js.Object {
  val container = "#canvas"
}

一个更好的方法是在facade中静态地输入options对象:

代码语言:javascript
复制
class BpmnJS(options: BpmnJSOptions) extends js.Object {
  ..
}

trait BpmnJSOptions extends js.Object {
  var container: js.UndefOr[String] = js.undefined
}

那样的话,你就可以把它叫做

代码语言:javascript
复制
new BpmnJS(new BpmnJSOptions {
  container = "#canvas"
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64740345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档