![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
Что-то мне кажется, что все это отдает то ли заумностью, то ли бредом.
Что мешает отдать с сервера коллекции с идентефикаторами? А на клиенте сортировать с помощью Sort и вытаскивать объект по идентефикатору? Если таки это сложно - "множество ArrayCollection соответствующих таблицам серверной БД", то все равно отдавать с сервера коллекцию DTO, в которую уже будут всунуты данные с разных таблиц и назначены идентефикаторы для предоставления уникального доступа. Мудрить с двумя структурами на клиенте - на кой? Кроме этого - коллекция с сервера отдается в зависимости от построения списка на сервере (допустим, ArrayList и LinkedList дадут/могут дать разный порядок), однако при формировании объекта ArrayCollection в его свойстве source типа Array порядок вложенных объектов будет постоянен вне зависимости от показываемой сортировки. По крайней мере, это может избавить от создания параллельной структуры для коллекции. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Цитата:
Среда разработки - Flex-AMFPHP-MySQL. Добавлено через 23 минуты Цитата:
![]() Можно, также, пример кода? Сама по себе идея, на мой взгляд, интересная. Последний раз редактировалось zorexundra; 12.09.2011 в 16:26. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 48
|
Цитата:
Добавлено через 3 минуты Очень здравая идея с построением общей мапы есть в HierarchicalCollectionView.Регулярно проходить про древовидной структуре и вправду дорого - цикл в цикле. Там как раз и строится мапа как хелпер. Правда лишь для открытых нод, что на практике несет в себе мало пользы. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
saprahan, это шутка в ответ на предложение дорабатывать исходные объекты.
Поделитесь мнением. Предположим есть экземпляр пользовательского класса MappedArrayCollection расширяющий ArrayCollection. Экземпляр слушает событие "collectionChange". По этому событию MappedArrayCollection циклом for each перебирает все элементы массива source и присваивает им идентификаторы. MappedArrayCollection имеет публичный метод отдающий элемент source по внешнему запросу с параметром идентификатора. В source 30000 элементов. Для каждого элемента в MappedArrayCollection задаётся 10 переменных со значением ключа-идентификатора. Насколько быстрым будет этот класс? Не повесит-ли он приложение? Не проще-ли создать отдельную хеш-таблицу со ссылками на элементы ArrayCollection.source? Последний раз редактировалось zorexundra; 12.09.2011 в 17:01. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 48
|
Цитата:
BTW экстендить нативные FLEX компоненты при более-менее сложной разработке приходится регулярно. Не стоит этого пугаться. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
saprahan, представьте, на станции авто-техобслуживания механик говорит Вам:
- Ща доработаем вашу колымагу! ![]() Вот набросал. Что скажите?: package { import mx.collections.ArrayCollection; import mx.events.CollectionEvent; public class MappedArrayCollection extends ArrayCollection { public var arrayElement:Object = new Object(); public function MappedArrayCollection(source:Array=null) { super(source); addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler); } override public function set source(s:Array):void { super.source = s; for each(var el:Object in s){ arrayElement["e"+el.ID]=el; } } private function collectionChangeHandler(event:CollectionEvent):void { switch(event.kind){ case "add": arrayElement["e"+event.items[0].ID]=event.items[0]; break; case "remove": delete arrayElement["e"+event.items[0].ID]; break; } } } } Последний раз редактировалось zorexundra; 14.09.2011 в 11:26. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|