Я не могу скомпилировать простой пример Binding.scala , и, будучи новичком, я не знаю, как это исправить. Может быть, README немного устарел? Пример на https://github.com/ThoughtWorksInc/Binding.scala-sample еще старше и вызывает предупреждения об устаревании.
Мой код, который я в основном собрал из README, и даже немного упростил:
import com.thoughtworks.binding.dom
import org.scalajs.dom.document
import scala.scalajs.js.annotation.JSExport
@JSExport
object SampleMain {
@dom
def table = {
<table border="1" cellPadding="5">
<thead>
<tr>
<th>Name</th>
<th>E-mail</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
}
@JSExport
def main(): Unit = {
dom.render(document.body, table)
}
}
fastOptJS
вызывает ошибку компиляции:
SampleMain.scala:25:9: overloaded method value render with alternatives:
[error] (parent: org.scalajs.dom.raw.Node,children: com.thoughtworks.binding.Binding[com.thoughtworks.binding.Binding.BindingSeq[org.scalajs.dom.raw.Node]],dummy: Unit)Unit <and>
[error] (parent: org.scalajs.dom.raw.Node,children: com.thoughtworks.binding.Binding.BindingSeq[org.scalajs.dom.raw.Node])Unit <and>
[error] (parent: org.scalajs.dom.raw.Node,child: com.thoughtworks.binding.Binding[org.scalajs.dom.raw.Node])Unit
[error] cannot be applied to (org.scalajs.dom.raw.HTMLElement, scala.xml.Elem)
[error] dom.render(document.body, table)
[error] ^
Я подозревал проблему с выводом типа и пробовал эту аннотацию типа: def table: com.thoughtworks.binding.Binding[org.scalajs.dom.html.Table]
, но это вызвало еще одну ошибку:
SampleMain.scala:11:6: type mismatch;
[error] found : scala.xml.Elem
[error] required: com.thoughtworks.binding.Binding[org.scalajs.dom.html.Table]
[error] (which expands to) com.thoughtworks.binding.Binding[org.scalajs.dom.raw.HTMLTableElement]
[error] <table border="1" cellPadding="5">
[error] ^
Буду признателен за объяснение, что здесь происходит не так.
Решение: https://stackoverflow.com/a/55137909/1862339