我很难理解在更复杂的应用程序中如何使用 MVVM。我能找到的所有示例都是非常基本的应用程序。
假设我有一个“包裹递送”应用程序。要执行交付,我必须执行 3 个步骤:
所有这些信息都会在设备上进行验证,然后发送到后端。
在 MVC 中我会这样实现:
处理DeliveryController
所有逻辑。这包括页面之间的导航、获取 API 数据以及在收集完所有数据后验证所有数据。
控制器充当视图之间的“连接”,收集所有信息并将其组合在一起。
但是这在 MVVM 中是如何完成的呢?所有数据将在哪里汇集?我能找到的大多数 MVVM 实现都是这样的:
在这种情况下,每个视图中输入的数据必须传递到下一个视图,ViewModel
直到到达链的末尾。此时将SignatureViewModel
进行验证并进行 API 调用。这看起来很奇怪,而且会变得非常混乱,因为数据只是“传递”多个,ViewModels
只是为了将其放在链的末尾。
我看到的另一个选择是每个 ViewModel 处理它自己的数据:
例如,这里DamagesViewModel
将验证并发送它自己的视图句柄的数据。这样做的一个大问题是数据没有作为一个整体发送。此外,在发送之前无法对整个数据进行任何验证。
我最后的想法是这样的:
这增加了一个DeliveryViewModel
要点,其作用类似于DeliveryController
MVC 中的作用。它将处理哪个ViewModel
下一步导航到哪个、处理要进行哪些 API 调用并在输入数据后验证所有数据。
对于我(作为一个主要使用 MVC 的人)来说,最后一个选项似乎是最明智的。但我也觉得它可能没有抓住 MVVM 的重点。
这在 MVVM 中通常是如何完成的?我真的很感激任何指点。非常感谢能够很好地解释这一点的文章链接。
另外,如果有人知道任何公开可用的存储库或项目中有这种模式,我很乐意看到它们。
即使使用 MVVM,我仍然使用某种形式的控制器,并将 ViewModel 视为基本的数据转换以促进视图。
因此,对我来说,仍然有一个服务或控制器层将中间层和后端层与架构的其余部分完全分开。视图模型的发挥作用取决于消费者/应用程序 - 从服务层获取数据、转换数据、验证等以达到消费者/应用程序等的目的。