【问题标题】:How to bind multiple observers to one ControlProperty如何将多个观察者绑定到一个 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)

但我似乎只有最后一个绑定有效。如何做到这一点?

【问题讨论】:

    标签: ios swift rx-swift


    【解决方案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() 对我来说就足够了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2020-09-03
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多