Понимание cairngormevents в сценарии действия - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть выпадающий список, который асинхронно заполняется веб-сервисом с событием caringorm.Мне нужно знать, когда это событие завершится, чтобы я мог установить выбранную строку поля со списком.Данные заполняются, но я не могу понять, как подписаться на это событие.Кто-нибудь знает, как это сделать?

Этот код не работает.

CairngormEventDispatcher.getInstance (). AddEventListener (SomeEvent.GETDATA, formLoaded);new SomeEvent (SomeEvent.GETDATA) .dispatch ();

защищенная функция formLoaded (событие: CairngormEvent): void {Alert.show ("Woot");}

1 Ответ

2 голосов
/ 18 ноября 2010

Cairngorm - это микроархитектура MVC.

Прежде всего: вот документация для cairngorm 2.2.1 http://cairngormdocs.org/docs/cairngorm_2_2_1/index.html

CairngormEvent связан с ICommand методом addCommand класса FrontController,Поэтому всякий раз, когда вы выполняете SomeEvent (SomeEvent.GETDATA) .dispatch (), вы фактически выполняете метод execute () команды, связанной с SomeEvent.GETDATA контроллером.

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

Ваше представление (выпадающий список) должно автоматически реагировать на модель (результат веб-службы) (иличерез некоторый другой объект посередине [как puremvc делает])

Я предлагаю быстро решить вашу проблему с помощью cairngorm:

  • зарегистрировать веб-сервис в локаторе сервисачтобы иметь ссылку на него на уровне приложения (для этого просто создайте компонент mxml, расширяющий ServiceLocator, и поместите туда свой тег httpservice или webservice, а затем назначьте ему идентификатор)

  • создайте локатор модели (класс, в котором хранятся данные, извлеченные из Интернета) и пометьте список данных, который вы хотите отобразить в комбинированном списке, как [Bindable]

  • идентифицируйте связанную командус SomeEvent.GETDATA и:

  • вызвать службу, зарегистрированную в локаторе службы, в исполненииМетод e
  • реализует интерфейс IResponder (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/IResponder.html) для обработки результата службы (зарегистрируйте свою команду в качестве ответчика службы в методе execute)
  • в результатеметод анализа данных, которые вы вернули с сервера, затем сохраните их в локаторе модели (который может быть легко получен с помощью одноэлементного метода доступа)

  • в представлении (файл mxml, содержащийcombo), привяжите комбинированный поставщик данных к списку данных вашего локатора модели (сделав несколько привязок ранее), чтобы заставить его реагировать на изменения, произошедшие в модели.

получайте удовольствие;)

...