我们有一个典型的主/细节视图。主视图显示一份票证标题列表,如果您单击票证标题,请查看使用票证详细信息的视图。

主视图具有模型,是一个“票证”对象列表,每个对象包含有关特定票证的更多信息。我们绑定了一个处理程序,基本上实例化了一个新的细节视图并显示它。这有效,除了我们必须将所有配置值作为原始数据类型给予构造函数(我们知道我们无法在实例化时使用对象)

我们想到了另一种方式来做这一点,但无法让它工作。在init()(详细视图模型)中,我们只通过ID(单击的票证)并希望使用mvx.resolve获取主视图模型。所以问题是,你可以在其他视图模型中获取任意的视图模型吗?

第二种想法是写一个基本视图模型类,我们的应用程序中的所有视图模型继承,它将视图模型注册到实时到服务,以便您可以调用该服务并从任何地方获取视图模型(Mediator图案)。这会违反框架吗?

我发现的答案是“使用消息”,但对我来说似乎很笨重,至少我是如何理解这一点的。详细信息视图模型必须向主视图模型发送消息“确定我已经准备好了”,然后主视图模型会说“好的,继承的配置”。

所以总结问题:

  1. 可以从其他视图模型中的框架中获取某些视图模型?
  2. 将用手实施这一点违背框架?
  3. 我们是否正确理解了消息方法,如果不是,那么做什么更轻便/泛滥的方式?
  4. 欢呼并谢谢

    tom

有帮助吗?

解决方案

通常在我必须在视图模型中共享数据时,我使用服务来管理它。该服务通常通过IOC注入。

我将视图模型作为服务与视图之间的中介。我的大多数逻辑都存储在服务中。我在视图模型中所拥有的唯一的东西是数据绑定的属性,调度到服务的命令以及其他演示级别问题。

对于您的场景,我将将MasterViewModel传递给DetailViewModel的标识符,其中它将询问由ID配置的ConfigurationService

希望这有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top