Flex, Mate: путь к событию - какой путь выбрать? - PullRequest
0 голосов
/ 26 апреля 2011

Представьте, что у нас есть объект, отправляющий какое-то событие, и этот объект должен выполнить какое-то действие с этим событием.Как правильно поймать это событие?Могу ли я прослушать это событие непосредственно в моем объекте или я должен позволить этому событию проходить через EventMap?
Пример: у меня есть всплывающее окно с формой.При отправке формы я собираюсь отправить запрос на удаленный сервер и закрыть это всплывающее окно.Является ли идеологически правильным выполнение всплывающих окон при нажатии без отправки пользовательского события в EventMap?Благодаря.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

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

Другой случай, если всплывающее окно было создано самим Мате (я имею в виду на карте событий). В этом случае я не вижу проблемы уничтожить окно в обработчике Mate, который обрабатывает некоторое событие submit, выполняет запрос к серверу и сразу уничтожает окно.

Но в любом случае вы должны отправлять события Mate (я имею в виду события, которые обрабатываются картой событий), используя простое правило: не отправляйте события низкого уровня. Вы должны преобразовать их в события, отражающие бизнес-логику на соответствующем уровне приложения. В вашем случае вы не должны рассматривать отправку формы в виде двух операций: запрос сервера и закрытие окна. С точки зрения окна, это просто отправка формы, и окно не должно заботиться о том, будет ли запрос к серверу или чтение данных из SharedObject или даже из какой-либо модели. Поэтому окно должно отправлять событие submit, а карта Mate должна обрабатывать это событие и создавать запрос и уничтожение окна в одном и том же обработчике. Таким образом, вы можете использовать свой вид, не зная, отображается ли вид во всплывающем окне или, возможно, в собственном окне AIR. Просто настройте карту событий вашего Mate.

И не забывайте, что карта Мате может быть иерархической. Таким образом, вы можете разделить уровни обработки событий бизнес-логики.

1 голос
/ 26 апреля 2011

да, это правильно, и вам не нужно отправлять событие только для закрытия окна, потому что основная цель событий сообщить внешним / родителям, что что-то сделано / изменено

...