当我使用Binding.scala时,我想根据源数据someCollection
创建一些div
:
val someCollection = Seq("foo", "bar")
someCollection.map { item =>
<div>{item.bind}</div>
}
但是,我遇到编译器错误每个指令必须在 SDE block 内
。
我该如何解决这个问题?
最佳答案
导致这个错误的代码是你的bind
表达式不得超出 @dom
的范围宏。这可能在创建闭包时发生,可以通过以下方式解决:
- 将闭包中的代码重构为自己的代码
@dom
注释方法。 转换
someCollection
到BindingSeq
,例如:Constants(someCollection: _*).map { item => <div>{item.bind}</div> }
- 提供
scalaz.Traverse
集合的类型类 ( Run this example on ScalaFiddle )
长话短说
@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>
关于scala - 当我使用 Binding.scala 时,出现错误 `each instructions must be inside a SDE block` ,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42498968/