[英]Subscription using Driver with RxSwift
我对RxSwift及其与Driver的使用有疑问。
我只尝试了这种模式
loginButton.rx_tap
.doOn({[unowned self] _ in
self.loginButton.enabled = false
})
.debug()
.flatMap({[unowned self] in self.loginViewModel.login() })
.subscribeNext({ [weak self] login in
// Custom code
})
.addDisposableTo(disposeBag)
因此,一切都从轻按按钮开始...但是如果我可以尝试以这种方式开始:
let contractCode = Variable(contractDetail.contractCode).asDriver()
viewModel = viewModel(provider: apiProvider! as! RxMoyaProvider<APIProvider>, contractCode: contractCode)
_ = viewModel?.getStatus()
.subscribeNext({ data in
print(data)
guard data?.result == 1 else {
// ALERT
return;
}
// Custom code
})
其中contractDetail.contractCode是字符串,而viewModel中的contractCode是驱动程序。 它订阅它,但是不会在onNext上触发,因此subscribeNext不会被调用。 你能帮助我吗? 这种方法有什么问题? 谢谢
您的意思是这部分没有在下一个触发: Variable(contractDetail.contractCode).asDriver()
吗? 如果是,如何更改contractCode的值? 如果您这样做:
// binding
Variable(contractDetail.contractCode).asDriver()./* more binding */
// change value (contractCode is a simple string)
contractDetail.contractCode = "new value of contract"
这将不起作用,因为Variable不遵守给定值,因此您必须更改实际Variable的value属性:
// create variable
let variable = Variable(contractDetail.contractCode)
// binding
variable.asDriver()./* more binding */
// change value of variable
variable.value = "new value of contract"
在这种情况下,新值将在该变量的订阅者上引起onNext事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.