在另一个ViewModel中获取ViewModel引用
-
21-12-2019 - |
题
我们有一个典型的主/细节视图。主视图显示一份票证标题列表,如果您单击票证标题,请查看使用票证详细信息的视图。
主视图具有模型,是一个“票证”对象列表,每个对象包含有关特定票证的更多信息。我们绑定了一个处理程序,基本上实例化了一个新的细节视图并显示它。这有效,除了我们必须将所有配置值作为原始数据类型给予构造函数(我们知道我们无法在实例化时使用对象)
我们想到了另一种方式来做这一点,但无法让它工作。在init()(详细视图模型)中,我们只通过ID(单击的票证)并希望使用mvx.resolve获取主视图模型。所以问题是,你可以在其他视图模型中获取任意的视图模型吗?
第二种想法是写一个基本视图模型类,我们的应用程序中的所有视图模型继承,它将视图模型注册到实时到服务,以便您可以调用该服务并从任何地方获取视图模型(Mediator图案)。这会违反框架吗?
我发现的答案是“使用消息”,但对我来说似乎很笨重,至少我是如何理解这一点的。详细信息视图模型必须向主视图模型发送消息“确定我已经准备好了”,然后主视图模型会说“好的,继承的配置”。
所以总结问题:
- 可以从其他视图模型中的框架中获取某些视图模型?
- 将用手实施这一点违背框架?
- 我们是否正确理解了消息方法,如果不是,那么做什么更轻便/泛滥的方式?
欢呼并谢谢
tom
解决方案
通常在我必须在视图模型中共享数据时,我使用服务来管理它。该服务通常通过IOC注入。
我将视图模型作为服务与视图之间的中介。我的大多数逻辑都存储在服务中。我在视图模型中所拥有的唯一的东西是数据绑定的属性,调度到服务的命令以及其他演示级别问题。
对于您的场景,我将将MasterViewModel
传递给DetailViewModel
的标识符,其中它将询问由ID配置的ConfigurationService
。
希望这有帮助。
不隶属于 StackOverflow