Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.04.2010, 22:53
avatar_of_Moock вне форума Посмотреть профиль Отправить личное сообщение для avatar_of_Moock Найти все сообщения от avatar_of_Moock
  № 1  
Ответить с цитированием
avatar_of_Moock

Регистрация: Jan 2010
Сообщений: 10
По умолчанию передача данных между компонентами

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

Старый 06.04.2010, 11:47
lighto вне форума Посмотреть профиль Отправить личное сообщение для lighto Найти все сообщения от lighto
  № 2  
Ответить с цитированием
lighto
[+1 17.02.10]
 
Аватар для lighto

Регистрация: Aug 2009
Адрес: Казахстан Усть-Каменогорск
Сообщений: 249
События, БД недля того....
__________________
Flex+AS3 good)

Старый 07.04.2010, 12:43
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 3  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
предлагаю компромис. :-)
локальная модель данных, туда событиями закидываете данные, и из нее же берете другими компонентами. гуглить ModelLocator.getInstance()
во

Старый 08.04.2010, 17:53
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 4  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
ModelLocator.getInstance() - это решение, я так понимаю, используется как proxy?

Вопросик по этому поводу:

Я вот тоже на событиях пытаюсь делать. А если данные лежат глубоко в одной ветке компонентов, а обработчик совсем далеко в другой - как передать исходник в обработчик? ... щас делаю через корень, что-то типа:
Код AS3:
// main.mxml
private function _initListeners():void
{
	addEventListener(Constants.GET_GROUPS_LIST, _attachGroupsList);
}
 
private function _attachGroupsList(event:Event):void
{
	event.target.dataProvider = groupsList as DataAC;
}
 
...
 
// UserForm.mxml
private function _creationCompleteHandler():void{
	groupDDList.dispatchEvent(new Event(Constants.GET_GROUPS_LIST, true));				
}
 
...
 
<s:DropDownList id="groupDDList" labelField="name" />
но дело в том, что приходится через корень все это дело "перекидывать", ну или через первый общий родительский узел. Как без прокси и не через корень все это можно ПРАВИЛЬНО реализовать?
Изображения
 

Старый 09.04.2010, 00:51
NePridymal вне форума Посмотреть профиль Отправить личное сообщение для NePridymal Найти все сообщения от NePridymal
  № 5  
Ответить с цитированием
NePridymal
 
Аватар для NePridymal

Регистрация: Apr 2007
Сообщений: 143
Отправить сообщение для NePridymal с помощью ICQ
Ну так, для флекса, навскидку самое популярное
гуглить
Cairngorm , PureMVC

Старый 09.04.2010, 10:13
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 6  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
Опыта в AS3 у меня пока немного - решение может оказаться с точки зрения "рентабильности" сомнительное, не знаю по какой причине .... но как бы там ни было - оно работает и выполняет именно то, что нужно. А нужно следующее:

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

В общем-то созрело пока следующее решение:

Код AS3:
/* EventsManager.as */
package components
{
	import flash.events.EventDispatcher;
 
	public final class EventsManager{
 
		public static const EDIT_ITEM:String = "editItem";
 
		public static const eventListener:EventDispatcher = new EventDispatcher();
	}
}
 
/* SomeComponent.as */
package components
{
	import spark.components.List;
	import components.*;
 
	public class SomeComponent extends List
	{
		public function SomeComponent()
		{
			super();
 
			EventsManager.eventListener.addEventListener(
				EventsManager.EDIT_ITEM,
				function():void
				{
					trace('closer');
				});
 
		}
	}
}
 
/* ну и где-то в тридевятом царстве, в частности в customItemRenderer-е */
EventsManager.eventListener.dispatchEvent(new ListItemEvent(EventsManager.EDIT_ITEM, data));
Несколько моментов (поправьте пожалуйста если че не то говорю - буду признателен):

1) final прикрутил для красоты
2) public static const eventListener - думаю так правильнее будет

И еще нарисовался интересный баг. Если использовать не closer а нечто вроде
Код AS3:
EventsManager.eventListener.addEventListener(
	EventsManager.EDIT_ITEM,
	_someHandler);
 
 
private function _someHandler(e:ListItemEvent):void
{
	trace('handler');
};
то работает, если класс написан с нуля. Стоит, к примеру, поменять
public static const eventListener
на
public static var eventListener
то все сразу вываливается и _someHandler перестает срабатывать, даже если потом все назад вернуть - очень странное поведение. А через closer работает как часы. Могу предположить (знания мало, поэтому чисто теоретически), что какой-нибудь сборщик мусора собирает чего-нибудь куда-нибудь ибо экземпляра как-такового нет, хотя почему тогда работает первый раз, пока ручками не залезешь что-нить править? Никаких weakReference я не использую. FB и сам Flex самые последние, плеер тоже. (номера версий лень смотреть)

Знающий народ - ответьте плиз - что за баг такой странный?

Старый 09.04.2010, 11:36
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 7  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Предалаю посмотреть в сторону Mate Framework. Первый, который писался конкретно для Flex, а не был портирован с другого языка как Cairngorm , PureMVC и др. Там как раз реализован безболезненный обмен событиями компонентов в EventMap-ах, что позволяет уменьшить общую связанность компонентов. Ну и собственно не надо громоздить кучу классов как в упомянутых выши фреймворках. Это конечно его огромный плюс.
__________________
2+2=5

Старый 09.04.2010, 11:58
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 8  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
2 BeDLiNt посмотрю обязательно - спасибо за ссылочку

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

Вот по этому поводу и хотел спросить:

нарисовались следующие "CRUD" операции: create, add, edit, update, revert, delete (ну в общем-то ни разу не новость) - и это практически для каждого VO (в моем случае) и не только.

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

Из особо положительного могу только отметить (на мой взгляд), что все в одно место теперь стекается, что касается проделываемых операций.

public static const NEW_ITEM:String = "newItem";
public static const EDIT_ITEM:String = "editItem";
etc.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:02.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.