2013-02-16 51 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聽起來不錯,如果潮汐框架不會給你動態的對象。

相關問題