Итак, у меня есть модуль в flex, в который я добавляю пользовательский компонент. У меня также есть класс, который обрабатывает данные, которые я хочу показать, давайте назовем этот класс DataHandler.
DataHandler получает данные от серверного решения, а затем начинает объединять данные для моего модуля и пользовательского компонента.
Когда данные готовы, они отправляют событие, которое ловит мой Модуль. Я отправляю новые данные в мой компонент.
пример кода для этого в модуле:
private function onDataChange(evt:Event=null):void
{
_customComponent.ItemData = _dataHandler.DataProvider;
}
Затем _customComponent получает данные:
public function set ItemData(value:ItemDataVO):void
{
_itemdata = value;
}
// _itemdata - это пользовательский класс с именем ItemDataVO
Теперь в моем пользовательском компоненте я просто связываю данные с моими компонентами mxml, например
<mx:Label
text = "Text: {_itemdata.Text}"
fontFamily = "Hel"
fontSize = "12"
x = "83"
y = "40" />
Когда я получаю новые данные, метка автоматически меняется.
Пока все хорошо. Но то, что у меня также есть в моем пользовательском компоненте, это список.
И это моя проблема. Когда я связываю данные со списком, я делаю следующее:
<mx:List
id = "_list"
dataProvider ="{_itemdata.Collection}"
itemRenderer = "components.renderers.CustomRenderer" />
// this _itemdata.Collection является коллекцией ArrayCollection, которая содержит коллекцию элементов на основе пользовательского класса.
Привязка не работает, и я также получаю varning для каждого элемента в списке во время выполнения:
предупреждение: невозможно связать со свойством 'parent' в модулях класса :: CustomModule '
(В качестве обходного пути я также пытался установить элемент списка _list каждый раз при установке ItemData. Новые данные list затем обновляются, но я не вижу никаких визуальных обновлений в списке.)
Кто-нибудь знает, как заставить эту привязку работать?
С уважением, Адлерц =)