Добавление элементов в Flex с использованием модели презентации - PullRequest
1 голос
/ 11 апреля 2011

Я выполняю рефакторинг некоторого кода Flex, написанного другим разработчиком, и реализую подход PresentationModel, поскольку мне нравится отделять ActionScript от MXML.Одна из проблем, с которыми я столкнулся, заключается в том, что оригинальный код ActionScript добавляет / удаляет элементы из MXML.

Что происходит, если функция-обработчик проверяет модель и, если значения правильные, создаст или удалит элементс точки зрения.Каков наилучший способ заставить модель презентации отобразить элементы объявления в представлении и при этом сохранить ту слабую связь, к которой я стремлюсь?

Я думал об использовании простых событий, которые отправляет модель презентации и представлениеМожно перечислить для передачи детали добавляемого элемента.Есть ли другое решение?

Спасибо

Стивен

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Если вы используете модель презентации, я бы предположил, что у вас есть какие-то данные о том, что должно произойти. Когда элементы любого вида динамически добавляются / удаляются, я стараюсь сделать их управляемыми данными для более легкой манипуляции. Если вы хотите добавить еще один элемент, добавьте другую модель данных в свой поставщик данных (List, ComboBox, DataGroup и т. Д.).

Применяя этот подход, вы абстрагируете логику от докладчика к представлению. События должны использоваться только для того, чтобы ваш взгляд знал, когда ваш докладчик чего-то достиг. Данные могут быть получены таким способом (и это хорошая практика), ИЛИ вы можете просто привязать данные в презентере к вашему провайдеру данных. И то, и другое хорошо, но я считаю, что привязка будет чище и проще.

0 голосов
/ 11 апреля 2011

Каждая часть кода, которая выполняет некоторые графические функции (рисование границы, стиль настройки, управление перетаскиванием, анимация, ...), должна быть включена в представление, а не в модель представления.Это графическое представление о том, что вещи должны выполняться после изменения свойства в PM, мы используем Cairngorm 3 Observer lib.По сути, он слушает некоторые изменения в модели представления и позволяет выполнять функцию в представлении.

<cg:ObserveValue 
    source="{ model.firstName }" value="{ Name.SARA }"  
    handler="runEffectFunction"/>

См. документацию

...