У меня есть два экземпляра вида V1a и V1b. Поскольку они являются экземплярами одного типа, они используют один и тот же экземпляр модели представления (PM1), поскольку он вводится в каждый экземпляр как одноэлементный. Каждый вид показывает другое состояние (S1a для V1a и s1b для V1b), но переключение между этими двумя точками зрения (например, когда они находятся в TabNavigator) даст странные результаты:Модель презентации Flex: должно быть указано в представлении?
- пользователь смотрит на V1a и видит состояние в S1a;
- Пользователь смотрит на V1b и видит состояние для S1b;
- Пользователь снова смотрит на V1a, но на этот раз видит состояние для S1b.
Это связано с тем, что S1b перезаписывает состояние в одножильном элементе PM1, так что, когда V1a снова открывается, на дисплее отображается состояние из V1b. У меня есть три решения:
- Не вводите ни в коем случае одиночки! но это, по-видимому, самый распространенный способ сделать это;
- Когда пользователь переключает представление, он повторно вводит свои данные в PM1. Это может усложниться в иерархических представлениях, где верхний уровень имеет состояние и ему необходимо ввести его на нижний уровень. Необходимо больше внимания уделять привязкам;
- Держите состояние в представлении и передавайте его в ПМ, когда представление хочет действовать.
Решение 3 кажется самым простым. Однако все, что я прочитал о модели презентации, как правило, предполагает, что состояние хранится в модели презентации. Может ли кто-нибудь сказать мне, где я ошибаюсь? Насколько я могу судить, гораздо проще и безопаснее удерживать состояние в представлении, чем в модели презентации.
Я не использую презентационную модель самостоятельно, но разве вы не должны использовать разные экземпляры модели в каждом представлении? – 2013-02-16 01:30:40
Да, вы правы. Я был смущен, поскольку используемая мной структура (Tide) не помогла создать новый экземпляр, и многое из того, что написано в Интернете, противоречиво. – Doahh