如果 类,我如何将 scala seq 导出到 js.Array
How can I export scala seq to js.Array in case classes
这个问题是与
相关的问题
如果我有 class 形式的案例
case class Foo(var id : Long,var title: Seq[String])
即它包含一系列数据,是否有任何设置可以导出为 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,我的方法是在共享项目中使用泛型
IE。
case class Foo[S[_]](var id : Long, var title: S[String])
在 Scala JVM 中,我将案例 class 腌制为表单的对象
Foo(id, Seq(title1, title2, ...))
它是一个 Foo[Seq]
类型的对象,在 scala JS 中我将该对象腌制为
Foo[js.Array]
.
这个问题是与
如果我有 class 形式的案例
case class Foo(var id : Long,var title: Seq[String])
即它包含一系列数据,是否有任何设置可以导出为 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,我的方法是在共享项目中使用泛型 IE。
case class Foo[S[_]](var id : Long, var title: S[String])
在 Scala JVM 中,我将案例 class 腌制为表单的对象
Foo(id, Seq(title1, title2, ...))
它是一个 Foo[Seq]
类型的对象,在 scala JS 中我将该对象腌制为
Foo[js.Array]
.