[英]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.