2017-02-28 5 views
2

私はBinding.scalaを使用する場合、私はソースデータsomeCollectionに応じていくつかのdiv Sを作成したい:Binding.scalaを使用すると、「各命令はSDEブロック内になければならない」というエラーが表示されますが、これをどのように修正できますか?

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

はしかし、私は、コンパイラエラーeach instructions must be inside a SDE blockを得ました。

どうすればこの問題を解決できますか?

+0

この質問のために 'binding.scala'タグを作成するのに助けが必要です。 https://github.com/ThoughtWorksInc/Binding.scala/issues/47を参照してください。 –

答えて

3

このエラーの原因となるコードは、bindの式が@domマクロの有効範囲外であってはならないということです。独自の@dom注釈付きメソッドにクロージャ内のコードをリファクタリング

  1. :クロージャを作成してすることで解決できる場合に発生することがあります。
  2. 例えば、BindingSeqsomeCollection変換:

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


TL(Run this example on ScalaFiddle)収集のためscalaz.Traverse型クラスを提供し、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> 
関連する問題