【发布时间】:2020-02-28 21:11:24
【问题描述】:
在 MVVM 架构模式中哪个是调用 API 的正确位置?
我遇到了上述场景的两种实现方式。
1) 从视图控制器调用 api。 2) 从viewmodel调用api。
哪一个更适合 MVVM 架构? 或者从哪里调用 MVVM 中的 api 的任何其他更好的方法?
当然,API 调用是在单独的 Web 服务相关类中实现的。 但我必须从某个地方调用该方法(视图控制器或视图模型)
【问题讨论】:
在 MVVM 架构模式中哪个是调用 API 的正确位置?
我遇到了上述场景的两种实现方式。
1) 从视图控制器调用 api。 2) 从viewmodel调用api。
哪一个更适合 MVVM 架构? 或者从哪里调用 MVVM 中的 api 的任何其他更好的方法?
当然,API 调用是在单独的 Web 服务相关类中实现的。 但我必须从某个地方调用该方法(视图控制器或视图模型)
【问题讨论】:
视图:这里只设置视图逻辑,如文本、颜色、约束、图层等。超级笨。
模型:是人、书、狗、待办事项。它应该只代表数据库中的数据。通常实现 Codable 等。
视图模型:视图应该向视图模型询问所有数据。因此,这就是 api 调用所在的位置。视图根本不应该知道 api。
一个 UIViewController,是一个视图,应该有一个 viewModel。 UIViewController 必须仍然是愚蠢的,并且从 API 中不知道。
【讨论】:
视图控制器充当它管理的视图和应用数据之间的中介 所以在 ViewController 上调用 apiCall 函数更有意义
【讨论】: