【问题标题】:How do I declare embedded css with Binding.scala如何使用 Binding.scala 声明嵌入式 css
【发布时间】:2017-08-12 01:48:31
【问题描述】:

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

我该如何解决?

【问题讨论】:

    标签: css syntax-error scala.js scala-xml binding.scala


    【解决方案1】:

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

    style 元素中使用CDATA 部分。

    @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

    【讨论】:

    【解决方案2】:

    用杨波的回答:

    @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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-18
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2017-11-28
    • 1970-01-01
    • 2015-10-25
    相关资源
    最近更新 更多