如何在case类中将scala seq导出到js.Array
这个问题是一个与经济有关的问题 以防我有一个表单的case类如何在case类中将scala seq导出到js.Array,scala,scala.js,case-class,Scala,Scala.js,Case Class,这个问题是一个与经济有关的问题 以防我有一个表单的case类 case类Foo(变量id:Long,变量title:Seq[String]) i、 e.它包含一系列数据,是否有任何设置要导出为js.Array?在仅Scala.js的项目中,只需执行以下操作: case class Foo(var id: Long, var title: Seq[String]) { @JSExport("title") protected def jsTitle: js.Array[String] =
case类Foo(变量id:Long,变量title:Seq[String])
i、 e.它包含一系列数据,是否有任何设置要导出为
js.Array
?在仅Scala.js的项目中,只需执行以下操作:
case class Foo(var id: Long, var title: Seq[String]) {
@JSExport("title")
protected def jsTitle: js.Array[String] =
title.toJSArray
@JSExport("title")
protected def jsTitle_=(v: js.Array[string]): Unit =
title = v.toSeq
}
但是,这将拒绝在共享源代码中编译,因为Scala/JVM不了解js.Array
恐怕你的问题没有现成的解决办法。最简单的解决方案是在项目的JVM和JS部分中分别声明
Foo
。然后您仍然可以从共享源使用它。我通常使用upickle,我的方法是在共享项目中使用泛型
即
在scala JVM中,我将case类作为表单的对象进行pickle
它是一个类型为Foo[Seq]
的对象,在scala JS中,我将对象pickle为
Foo[js.Array]
case class Foo[S[_]](var id : Long, var title: S[String])
Foo(id, Seq(title1, title2, ...))