scala - 当我使用 Binding.scala 时,出现错误 `each instructions must be inside a SDE block` ,我该如何解决?

标签 scala dom data-binding web-frontend binding.scala

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

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

但是,我遇到编译器错误每个指令必须在 SDE block 内

我该如何解决这个问题?

最佳答案

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

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

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

  3. 提供 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/

相关文章:

scala - 在ScalaCheck中生成选项[T]

javascript - 如何在隐藏元素之前触发元素的事件监听器

javascript - 如何使用 Puppeteer 求解和定位元素

c# - ContentControl 未更新

winforms - 您是否将对象字段数据绑定(bind)到表单控件?

scala - 提升 RewriteResponse 未找到有效的 url

scala - 在 Scala 中定义期间自引用 val

scala - 如何使用带有自定义 UDF 的 DataFrame.explode 将字符串拆分为子字符串?

javascript - 使用 JavaScript 的 HTMLCollection 更改事件

在 Visual Studio 2012 中调试 XAML 数据绑定(bind)