2011-04-11 1 views
1

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

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

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

Благодаря

Стивен

ответ

1

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

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

+0

Ну исходный код, помните, я рефакторинг существующего кода здесь, имеет функцию сеттер, который устанавливает значение затем вызывает другую функцию, называемую drawBorder(). Эта функция drawBorder создает форму границы и добавляет ее с помощью addElement(). – StephenAdams

+0

да, я знаю, что вы рефакторинг. Если вы собираетесь использовать рефакторинг для использования шаблона Presenter, вам придется внести некоторые изменения. Это просто способ кодирования. –

0

Каждая часть кода, которая использует некоторые графические элементы (рисование границы, стиль установки, перетаскивание & управления каплями, анимация, ...), должна быть включена в представление, а не в модель представления.

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

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

См the documentation

+0

Я посмотрел библиотеку Observer, но я думал, что Data Binding мне по решению. Я собираюсь установить флаг show/hide в моей PresentationModel. Затем привяжите это к видимому свойству элементов, которые я пытаюсь добавить. Таким образом, я могу изменить флаг show/hide и включить/выключить элементы, а не пытаться их добавить, и я не могу выполнить текущий способ написания этой страницы. – StephenAdams