如何组合绑定片段而不将它们包装在 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 中将多个项目居中而不将它们放入容器中?