首页 > 解决方案 > 在 iOS 上,对于 MVVM 中的 DisposeBag,可以放在 ViewModel 中吗?

问题描述

我是 RxSwift 的新手,在这里我想问一个关于 DisposeBag 应该在哪里的问题。

我的情况是,我已经检索到在 tableview 中显示的项目列表,并且每个项目都有自己的标志来指示它是否被选中。

所以我不只是将结果列表绑定到 tableview。当用户通过表格视图导航时,我需要一些逻辑来编辑本地列表。

我已经在中创建了一个实例Variable([Item])ViewModel但是如果我将逻辑放在ViewModelaDisposeBag中是需要的。

在谷歌搜索之后,大多数 MVVM+RxSwift 的示例都有Variable放置DisposeBagin的实例,ViewModel但有些人说它应该只放在ViewController. 真的吗?我怎样才能听Observable进去ViewModel以便我的业务逻辑可以放入ViewModel

标签: iosswiftmvvmrx-swift

解决方案


除非有充分的理由,否则DisposeBag通常不应A放置在 ViewModel 中。

通常, aDisposeBag旨在将订阅与其所有者联系起来。ViewModel 通常不会创建任何订阅,而只是提供 Observables 以便消费者可以订阅它们(例如 ViewController)。

这意味着 ViewController 是通常持有 的那个DisposeBag,因为它通常是使用订阅的那个(而不是 ViewModel 本身)。


推荐阅读