我试图用Binding.scala声明一些嵌入式css
import com.thoughtworks.binding._, Binding._
import org.scalajs.dom._
@dom def css = <style>
body {
background-color: lightblue;
}
</style>
dom.render(document.head, css)
但是,我收到错误消息:
ScalaFiddle.scala:6: error: not found: type lightblue
background-color: lightblue;
^
ScalaFiddle.scala:6: error: not found: value background
background-color: lightblue;
^
ScalaFiddle.scala:6: error: not found: value color
background-color: lightblue;
^
我该如何解决它?
您会看到错误消息,因为{
是 Scala XML 文本中的一个特殊字符。
在style
元素中使用CDATA
部分。
@dom def css = <style>
<![CDATA[
body {
background-color: lightblue;
}
]]>
</style>
{
在CDATA
部分中不再具有特殊含义。
请注意,此CDATA
方法仅在coalescing
标志打开时有效。请参阅 https://github.com/ThoughtWorksInc/Binding.scala/issues/30,如果您不小心关闭了标志,https://github.com/ThoughtWorksInc/Binding.scala/issues/58。
用杨波的答案:
@dom def css = <style>
<![CDATA[
body {
background-color: lightblue;
}
]]>
</style>
给我一个例外:
ScalaFiddle.scala:22: error: overloaded method value domBindingSeq with alternatives:
( text: String)binding.this.Binding.Constants[raw.this.Text]
...
请参阅 https://scalafiddle.io/sf/ATMVpjV/0
这解决了它:
@dom def css = <style>
{"""
body {
background-color: lightblue;
}
"""
}
</style>
见 https://scalafiddle.io/sf/ATMVpjV/1