2013-02-16 1 views
1

저는 뷰의 두 인스턴스 인 V1a와 V1b를 가지고 있습니다. 동일한 유형의 인스턴스이므로 둘 다 각각의 인스턴스에 단일 톤으로 주입되는 것처럼 동일한 프리젠 테이션 모델 (PM1) 인스턴스를 사용합니다. 각각의 뷰 (V1b위한 졸론 및 S1B위한 S1A) 서로 다른 상태를 도시하고 있지만 (예컨대 그들이가 TabNavigator에있는 경우와 같이) 두 뷰를 전환함으로써, 홀수 결과를 수득한다 :플렉스 프레젠테이션 모델 :보기에 상태가 있어야합니까?

  1. 사용자는 졸론 보인다 및보고를 상태는 입니다. S1a;
  2. 사용자는 V1b를보고 S1b의 상태를 봅니다.
  3. 사용자가 V1a을 다시 보지만 이번에는 S1b의 상태가 표시됩니다. 졸론이 재개되는 경우, 뷰 V1b의 상태를 도시하도록 S1B는 PM1 싱글 상태를 덮어 쓰기 때문에

이이다. 세 가지 해결책이 있습니다 :

  1. 싱글 톤을 삽입하지 마십시오! 하지만 그 일을하는 가장 일반적인 방법 인 것 같습니다.
  2. 사용자가보기를 전환하면 PM1에 데이터가 다시 주입됩니다. 최상위 수준이 상태를 가지며이를 맨 아래 수준으로 주입해야하는 계층 적보기에서는 복잡해질 수 있습니다. 바인딩을 사용하여 더 많은주의를 기울여야합니다.
  3. 보기에서 상태를 유지하고보기가 작동하기를 원하면 PM에 전달하십시오.

해결 방법 3은 가장 단순한 것 같습니다. 그러나 프리젠 테이션 모델에 대해 읽은 모든 내용은 프리젠 테이션 모델에서 국가가 개최 될 것을 제안하는 경향이 있습니다. 아무도 내가 잘못 가고 있다고 말할 수 있습니까? 내가 알 수있는 한, 프리젠 테이션 모델보다보기에서 상태를 유지하는 것이 훨씬 쉽고 안전합니다.

+0

내가 직접 프리젠 테이션 모델을 사용하지는 않지만 각보기에서 서로 다른 모델 인스턴스를 사용해야합니까? –

+0

네가 맞습니다. 내가 사용하고있는 프레임 워크 (Tide)가 새로운 인스턴스를 쉽게 만들지 못했고, 웹에 작성된 많은 부분이 상충되기 때문에 혼란 스러웠다. – Doahh

답변

0

해결 방법 1은 좋은 방법입니다. PM 클래스를 싱글 톤이 아니게 구성하십시오. 불행히도 내가 읽은만큼, Tide 프레임 워크는 이것을 지원하지 않습니다. 다른 DI 프레임 워크는 - 예를 들어 Parsley (더 이상 유지 관리되지 않음)은 매번 새로운 인스턴스를 삽입하는 DynamicObject를 지원합니다. RobotLegs (유지 관리)에는 mapClass 인젝터 매핑이있어 각 주입에 대한 새로운 인스턴스를 제공합니다.

솔루션 2가 지저분합니다.

해결책 3은 Tide 프레임 워크가 동적 개체를 제공하지 않으면 OK입니다.