Вложенные итемРендереры
Я надеюсь что здесь ещё пишут на Флексе)
У меня List со сложным итемрендерером, внутри которого ещё два итемрендерера. Постоянно происходит путаница данных, потому что датапровайдер внутренних итемрендереров создается налету из первого итемрендерера. Мне что в корневом классе создавать Vector.<ArrayCollection> для всех вложенных данных? http://i.stack.imgur.com/1ZzjY.png |
Интересно, тут ещё остались специалисты по Флексу?
Похоже окончательно технология загнулась... Ну да ладно, просто мучаюсь который день и никак не найду приемлемого решения. Никак не разберусь как правильно организовать данные. Итак вот есть драгабл List Код AS3:
Вот postIR Код AS3:
Код AS3:
Неужели нет какой-то стройной системы для организации правильной иерархии данных? Я пробовал в data первого итемрендерера передавать объект или ArrayCollection, но это выдает ошибки или не работает. В общем нужен любой совет или даже доработка за деньги. http://i.stack.imgur.com/RIXlE.png |
Не очень понятно, как данные организованы.
В posts по идее должны хранится объекты, у каждого из которых есть какой-то массив socialVector. То есть я бы создал класс Post, который содержит массив соцсетей. Массив posts отдаем внешнему листу, в сеттере data postIR отдаем локальному листу этот data.socialVector как датапровайдер. Дальше все должно вроде и так работать. itemrenderer1_creationCompleteHandler - выкинуть |
GBee, привет дружище)
Проблема в том, что рендеры пересоздаются. Да, можно хранить во внешних классах, но при перетаскивании ещё и индексы меняются и все это нужно учитывать. Все путается у меня постоянно. Я думал может есть какие-то встроенное решение, у Флекса куча разных возможностей и свойств, но похоже придется топорно городить огород. Добавлено через 2 часа 25 минут Цитата:
У меня есть объект PostData который является элементом датапровайдера для главного List: Код AS3:
К resources привязываю другой ArrayCollection, который имеет данными такой объект: Код AS3:
Теперь как связать выделение с данными? Если кликаю по итему, то я назначаю внутри его: Код AS3:
|
Привет!
В свое время мне очень помогла фраза "Рендереров не существует". :о)) Все дело в данных. Я со спарком не работал, но думаю там в этом плане не сильно должно отличаться. 1) Показываем инфу. Из PostIR навсегда выкидываем itemrenderer1_creationCompleteHandler(event:FlexEvent):void Дальше можно через сеттер data, либо биндингом. Так как по идее в PostIR в дату приходит PostData, то можно сразу забиндить Код AS3:
Код AS3:
Код весь тоже удаляем - оставляем один мхмл. Стейты - тоже Тестим отображение и перетаскивание!! Добавлено через 3 минуты Код AS3:
Тут смешной парадокс :о)) в value приходит ResData, которая сразу попадает в data , ну а дальше сам понимаешь :о)) Добавлено через 20 минут Изменение чекбоксов и дополнение отображения. Тут все по идее просто и делается в postIR 1) Подписываемся на CHANGE у c:CheckList (Это стандартный компонент? Если нет, то лучше пока на обычный поменять лист) в обработчике пробегаем по data.resources и всем selected = false; потом бежим по массиву event.currentTarget.selectedItems каждому ему (ResData) selected = true; Вроде должно работать. И насчет отображения первоначального забыл. Все-таки чтобы чекбоксы не только отмечались, но и выделялись как выбранные элементы списка. Идем в postIR 1) Создаем переменную например Код AS3:
Код AS3:
в нем, если дата пришла - создаем массивчик, бежим по дата.ресурсес и пихаем в новый массивчик РесДаты у которых селектед = труе. И после пихаем указатель массивчика в _selectedResData. Его это будоражит, он генерит событие (или как там биндинг сделан) И выделяет нужные чекбоксы. Короче, вот так, но это самый простой путь, который я не очень люблю. Биндинг удобен, но как-то не по нраву мне. А ну и я бы повесил биндинг на конкретные поля, которые будем использовать для отображения в итем рендерерах. Но тут не знаю, что лучше. Код AS3:
Код AS3:
|
Ох... Лучше я тебе в Скайп напишу)
|
Часовой пояс GMT +4, время: 10:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.