【问题标题】:How to combine binding fragments without wrapping them in an XML literal如何组合绑定片段而不将它们包装在 XML 文字中
【发布时间】:2017-09-26 06:47:23
【问题描述】:

我正在尝试将 2 个绑定片段合并为一个,而无需使用 englobing XML 文字。

见以下代码:

@dom def a = <div><p>a</p></div>
@dom def b = <div><p>b</p></div>

@dom def block = {
  // <div>
  {a.bind}
  {b.bind}
  // </div>
}

ScalaFiddle

正如所料,这不起作用,只显示b

我在这里寻找的是一种将 2 个片段组合为一个的方法,通过具有此签名的函数(例如)

combine: Binding[Node] x Binding[Node] -> Binding[BindingSeq[Node]]

这怎么可能?

谢谢:)

【问题讨论】:

    标签: html scala dom scala.js binding.scala


    【解决方案1】:

    https://scalafiddle.io/sf/9cLgxbN/1

    def block = Binding(Constants(a.bind, b.bind))
    

    https://scalafiddle.io/sf/9cLgxbN/6

    def block = Binding(Constants(a, b).map(_.bind))
    

    后者可以部分更新,而前者不能。

    对于BindingSeq

    https://scalafiddle.io/sf/9cLgxbN/7

    @dom def a = <div><p>a</p></div><div>b</div>
    @dom def b = <div><p>c</p></div><div>d</div>
    def block = Binding(Constants((a.bind.all.bind ++ b.bind.all.bind): _*))
    

    https://scalafiddle.io/sf/9cLgxbN/8

    def block = Binding(Constants(a, b).flatMap(_.bind))
    

    【讨论】:

    • 太棒了。这真的很简单。
    • 不错。我想知道如何将几个 BindingSeq 合并为一个。你刚刚给我带来了答案 :-) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多