避免在来自HTML的Scala.js调用中重复包名称

Avoid repeating package names in Scala.js calls from HTML

本文关键字:调用 包名 js Scala HTML      更新时间:2023-09-26

我在HTML页面中使用了许多这样的调用来调用我的Scala.js代码:

<table
  id="history"
  onclick="my.domain.project.name.ObjectName().handlerFunction(event.target)"
>
<script type="text/javascript">
  my.domain.project.name.ObjectName().otherFunction()
</script>

有没有办法避免一次又一次地键入包名,比如Scala/Java导入?我想把包名称保留在我的Scala源代码中,因为我也为JVM交叉编译它们,不想在那里遇到包冲突。

有两种解决方案。第一个有点类似于Scala导入,使用JavaScript:

var ObjectName = my.domain.project.name.ObjectName;
ObjectName().otherFunction();

另一种是用一个较短的名称专门导出ObjectName,这是在Scala.js:中完成的

package my.domain.project.name
import scala.scalajs.js.annotation._
@JSExport("ObjectName")
object ObjectName { ... }

然后在JavaScript:中

ObjectName().otherFunction();