当我使用Binding.scala时,我得到了一个错误“每个指令必须在SDE块中”,我如何修复这个错误?
当我使用Binding.scala时,我想根据源数据创建一些当我使用Binding.scala时,我得到了一个错误“每个指令必须在SDE块中”,我如何修复这个错误?,scala,dom,data-binding,web-frontend,binding.scala,Scala,Dom,Data Binding,Web Frontend,Binding.scala,当我使用Binding.scala时,我想根据源数据创建一些divssomeCollection: val someCollection = Seq("foo", "bar") someCollection.map { item => <div>{item.bind}</div> } val someCollection=Seq(“foo”、“bar”) someCollection.map{item=> {item.bind} } 但是,我得到了一个编译器
div
ssomeCollection
:
val someCollection = Seq("foo", "bar")
someCollection.map { item =>
<div>{item.bind}</div>
}
val someCollection=Seq(“foo”、“bar”)
someCollection.map{item=>
{item.bind}
}
但是,我得到了一个编译器错误,每个指令都必须在SDE块中
如何修复此问题?导致此错误的代码是,bind
表达式不能超出@dom
宏的范围。创建闭包时可能会发生这种情况,可以通过以下方式解决:
将闭包中的代码重构为自己的@dom
注释方法
将someCollection
转换为BindingSeq
,例如:
Constants(someCollection:*).map{item=>{item.bind}
为集合()提供一个scalaz.Traverse
type类
TL;博士
@dom def renderList(数据:List[Binding[String]])={
导入scalaz.std.list.\键入列表的类
对于(b),我需要有人帮助创建此问题的binding.scala
标记。请参阅
@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>