簡體   English   中英

RxSwift訂閱 <Bool> 變化取決於一個變量(MVVM)

[英]RxSwift subscribe to <Bool> change depend from one variable (MVVM)

開始學習RxSwift(領域課程)並有一些疑問。

在我的控制器中有一個TextField和Button,當我的TextField.count> 0時,我需要訂閱Button.isEnable

在課程中,此問題解決了下一個代碼:

在控制器設置值中:

userNameText.rx.text.orEmpty.bind(to: viewModel.userName).disposed(by: disposeBag)
passwordText.rx.text.orEmpty.bind(to: viewModel.passwordValue).disposed(by: disposeBag)
viewModel.isValid.map{$0}.bind(to: button.rx.isEnabled).disposed(by: disposeBag)

在模型中:

let userName = Variable<String>("")
    let passwordValue = Variable<String>("")
    let isValid: Observable<Bool>

    init() {
        isValid = Observable.combineLatest(self.userName.asObservable(), self.passwordValue.asObservable()) {(name, password) in
            return  name.count > 0 && password.count > 0
        }
    }

當然,使用Observable.combineLatest創建我們觀察到的具有2個值的observable(使用2個值)

如何在我們使用一個值的地方創建Observable?

PS不能像這樣工作(至少2分鍾)

isValid = Observable.combineLatest(self.passwordValue.asObservable()) {(name) in
                return  name.count > 0 && password.count > 0
            }

做就是了:

self.isValid = self.passwordValue.asObservable().map{ password in
    password.count > 0 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM