3

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

我该如何解决?

4

2 回答 2

4

您会看到错误消息,因为{它是 Scala 的 XML 文字中的特殊字符。

CDATAstyle元素中使用一个部分。

@dom def css = <style>
  <![CDATA[
    body {
      background-color: lightblue;
    }
  ]]>
</style>

该部分{不再具有特殊含义CDATA


请注意,此CDATA方法仅在coalescing标志打开时有效。如果您不小心关闭了标志,请参阅https://github.com/ThoughtWorksInc/Binding.scala/issues/30https://github.com/ThoughtWorksInc/Binding.scala/issues/58 。

于 2017-03-20T16:51:48.407 回答
1

用杨波的回答:

@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

于 2018-03-28T05:39:25.920 回答