I tried the following code to render json into dom but failed
<div class="row">
{val result = FutureBinding(ApiHomeProjectsGet.request())
result.bind match {
case None => <div>Loading...</div>
case Some(Success(ApiHomeProjectsGetResponse200(projects))) => {
for (project <- projects.items) yield <p> {project.title} </p>
}
case e => <div>Error</div>
}}
</div>
projects is defined as a case class
case class Projects(items: ArrayBuffer[Project])
the compiler reports error:
overloaded method value domBindingSeq with alternatives:
[error] (text: String)com.thoughtworks.binding.Binding.Constants[org.scalajs.dom.raw.Text] <and>
[error] (node: org.scalajs.dom.raw.Node)com.thoughtworks.binding.Binding.Constants[org.scalajs.dom.raw.Node] <and>
[error] (seq: Seq[org.scalajs.dom.raw.Node])com.thoughtworks.binding.Binding.Constants[org.scalajs.dom.raw.Node] <and>
[error] (bindingSeq: com.thoughtworks.binding.Binding.BindingSeq[org.scalajs.dom.raw.Node])com.thoughtworks.binding.Binding.BindingSeq[org.scalajs.dom.raw.Node]
[error] cannot be applied to (Object)
[error] <div class="row">
[error] ^
[error] one error found
How can I render json data from api request to dom with the for(...) yield pattern?
The best solution
case Some(Success(ApiHomeProjectsGetResponse200(projects))) =>
<div class="row">
{Constants[Project](projects.items:_*).map(item => <p> {item.title} </p>)}
</div>
{project.title}
).toSeq{project.title}
).toSeq – hailong Mar 21 '17 at 01:51