[英]RxSwift subscribe to <Bool> change depend from one variable (MVVM)
Start learning RxSwift (Realm courses) and have some question. 开始学习RxSwift(领域课程)并有一些疑问。
In my controller have one TextField and Button, I need to subscribe for Button.isEnable when my TextField.count > 0 在我的控制器中有一个TextField和Button,当我的TextField.count> 0时,我需要订阅Button.isEnable
In courses this problem solved next code: 在课程中,此问题解决了下一个代码:
In Controller set value: 在控制器设置值中:
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)
In model: 在模型中:
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
}
}
In course use Observable.combineLatest for create observable with 2 value, for which we observe.(work with 2 value) 当然,使用Observable.combineLatest创建我们观察到的具有2个值的observable(使用2个值)
How create Observable where we work with one value?? 如何在我们使用一个值的地方创建Observable?
PS Not work like this (min 2) PS不能像这样工作(至少2分钟)
isValid = Observable.combineLatest(self.passwordValue.asObservable()) {(name) in
return name.count > 0 && password.count > 0
}
Just do: 做就是了:
self.isValid = self.passwordValue.asObservable().map{ password in
password.count > 0
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.