繁体   English   中英

当我使用Binding.scala时,我收到错误`每个指令必须在SDE块内“,我该如何解决这个问题?

[英]When I use Binding.scala, I got the error `each instructions must be inside a SDE block`, how can I fix this?

当我使用Binding.scala时,我想根据源数据someCollection创建一些div

val someCollection = Seq("foo", "bar")
someCollection.map { item =>
  <div>{item.bind}</div>
}

但是,我得到一个编译器错误, each instructions must be inside a SDE block

我怎样才能解决这个问题?

导致此错误的代码是您的bind表达式不得超出@dom宏的范围。 创建闭包时可能会发生这种情况,可以通过以下方式解决:

  1. 将闭包中的代码重构为自己的@dom注释方法。
  2. someCollection转换为BindingSeq ,例如:

    Constants(someCollection: _*).map { item => <div>{item.bind}</div> }

  3. 为集合提供scalaz.Traverse类型类( 在ScalaFiddle上运行此示例

TL; DR

@dom def renderList(data: List[Binding[String]]) = <ol>{
  import scalaz.std.list._ // Type classes for List
  for (b <- data) yield {
    <li>{b.bind}</li>
  }
}</ol>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM