如何将多个观察者绑定到一个 ControlProperty
Posted
技术标签:
【中文标题】如何将多个观察者绑定到一个 ControlProperty【英文标题】:How to bind multiple observers to one ControlProperty 【发布时间】:2016-11-23 13:46:10 【问题描述】:我需要将slider.rx.value
绑定到 2 个具有不同映射的观察者。
slider.rx.value.map [unowned self] in self.formatter.string(from: NSNumber(value: $0)) ?? ""
.bindTo(textFieldAlpha.rx.text)
.addDisposableTo(disposeBag)
slider.rx.value.map Enhance.Global(alpha: $0)
.bindTo(enhance)
.addDisposableTo(disposeBag)
但我似乎只有最后一个绑定有效。如何做到这一点?
【问题讨论】:
【参考方案1】:这能实现你想要的吗?
let observable = slider.rx.value.shareReplay(1)
observable.map [unowned self] in self.formatter.string(from: NSNumber(value: $0)) ?? ""
.bindTo(textFieldAlpha.rx.text)
.disposed(by: disposeBag)
observable.map Enhance.Global(alpha: $0)
.bindTo(enhance)
.disposed(by: disposeBag)
如果您不需要缓冲区,则可以选择
let observable = slider.rx.value.share()
这里还有一个不错的 RxSwift 备忘单的链接https://www.cheatography.com/donghua-li/cheat-sheets/rxswift-operators/
【讨论】:
嗯,从文档中看我需要shareReplay(1)
进行绑定并不明显,但这可能是因为我是 Rx 的新手。我也不需要重播缓冲区,所以share()
对我来说就足够了。谢谢!以上是关于如何将多个观察者绑定到一个 ControlProperty的主要内容,如果未能解决你的问题,请参考以下文章
如何将 TabControl 的项目绑定到 wpf 中的可观察集合?
如何将可观察集合绑定到 xamarin 中的 flexlayout?
如何将可观察对象发布的整数变量绑定到 SwiftUI 中的 textField?