如何使用 Binding.scala 声明嵌入式 css



我试图用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

相关内容

  • 没有找到相关文章

最新更新