如何组合绑定片段而不将它们包装在 XML 文字中

Posted

技术标签:

【中文标题】如何组合绑定片段而不将它们包装在 XML 文字中【英文标题】:How to combine binding fragments without wrapping them in an XML literal 【发布时间】: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]]

这怎么可能?

谢谢:)

【问题讨论】:

【参考方案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 合并为一个。你刚刚给我带来了答案 :-) 谢谢。

以上是关于如何组合绑定片段而不将它们包装在 XML 文字中的主要内容,如果未能解决你的问题,请参考以下文章

如何在服务之间广播消息?

在 RelativeLayout 中将多个项目居中而不将它们放入容器中?

如何在容器(UIView)内居中对齐 2 个 UIView,而不将它们放在 UIView 内

如何迭代 JPA 查询结果而不将它们全部保留在内存中?

如何连接因子,而不将它们转换为整数级别?

如何剥离 Python 日志记录调用而不将它们注释掉?