根据我的阅读,似乎在MVVM中被认为是每个View都有自己相应的ViewModel的最佳实践,这是有意义的,因为ViewModel应该是View的模型。通常,不鼓励不同视图重用ViewModel。总是这样吗?如果没有,那么确定是否应该以这种方式重用ViewModel的一般指导原则是什么?
我可以想到的一种情况是,如果两个视图使用来自模型的完全相同的数据,并且视图本身只是以不同的方式表示数据,那么重用具有不同视图的ViewModel可能会令人满意。如果视图可以自己处理以不同方式表示相同数据,则一个ViewModel可能能够有效地为每个视图提供服务。
答案 0 :(得分:8)
我们有规则的原因是你在打破它们之前要考虑。
那就是:对两个相似的视图使用相同的ViewModel没有任何问题。你需要非常小心,你的两个视图不会分歧,留下一个试图做两件不同事情的视图模型。
这就是为什么建议每个视图都有一个视图模型。即使这可能会导致重复,但从长远来看,这将使视图更容易维护。
对于复制,具有共享基类的viewmodel类没有任何问题。