2013-02-16 48 views
1

我有两个视图的实例是V1a和V1b。因为它们是相同类型的实例,所以它们都使用与每个实例中作为单例注入的呈现模型(PM1)相同的实例。每个视图显示了不同的状态(S1A为V1A和S1b用于V1B),但在这两个视图之间的切换(例如,当它们处于TabNavigator的)会给奇怪的结果:Flex演示模型:应该在视图中进行状态展示吗?

  1. 用户查看V1A并看到国家S1a;
  2. 用户查看V1b并查看S1b的状态;
  3. 用户再次看到V1a,但是这次看到的状态为S1b

这是因为S1b覆盖PM1单例中的状态,所以当重新打开V1a时,视图显示V1b的状态。我有三种解决方案:

  1. 不要注入单身!但这似乎是最常见的做法;
  2. 当用户切换视图时,它将其数据重新注入到PM1中。这在顶层具有状态并需要将其注入底层的分层视图中会变得复杂。需要更多的关注与绑定;
  3. 保持视图中的状态并在视图想要执行时将其传递给PM。

解决方案3似乎是最简单的。然而,我所读过的有关演示模型的一切都倾向于表明状态是在演示模型中保存的。谁能告诉我我要去哪里?据我所知,视图中的状态比演示模型中的状态要容易得多,也更安全。

+0

我不使用演示模型我自己,但不应该在每个视图中使用模型的不同实例吗? – 2013-02-16 01:30:40

+0

是的,你是对的。我很困惑,因为我正在使用的框架(潮汐)并不容易创建一个新的实例,而且写在网上的很多内容是相互冲突的。 – Doahh 2013-02-22 17:32:47

回答

0

解决方案1是一个很好的方法 - 配置你的PM类不是单身。不幸的是,据我所知,潮汐框架不支持这一点。其他DI框架将会 - 例如Parsley(不再维护)支持每次注入新实例的DynamicObject。 RobotLegs(这是维护)有一个mapClass注射器映射,这将为您提供每个注射的新实例。

解决方案2听起来很混乱。

解决方案3听起来不错,如果潮汐框架不会给你动态的对象。

相关问题