2010-11-18 8 views
0

Ich habe eine Dropdown-Liste, die asynchron von einem Web-Service mit einem caringorm Ereignis bevölkert ist. Ich muss wissen, wann dieses Ereignis abgeschlossen ist, damit ich die ausgewählte Kombinationsfeldzeile festlegen kann. Die Daten werden ausgefüllt, aber ich kann nicht herausfinden, wie ich dieses Ereignis abonnieren kann. Weiß jemand das heiß zu machen?Verständnis von Cairngormevents in Action-Skript

Dieser Code scheint nicht zu funktionieren.

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

geschützte Funktion formLoaded (Ereignis: CairngormEvent): void { Alert.show ("Woot"); }

Antwort

2

Cairngorm ist eine MVC-Mikroarchitektur.

vor allem: hier ist die Dokumentation für cairngorm 2.2.1 http://cairngormdocs.org/docs/cairngorm_2_2_1/index.html

A CairngormEvent zu einem ICommand durch das Verfahren addCommand der Frontcontroller-Klasse zugeordnet ist. Wenn Sie also SomeEvent (SomeEvent.GETDATA) .dispatch() ausführen, führen Sie tatsächlich die execute() -Methode des Befehls aus, der SomeEvent.GETDATA vom Controller zugewiesen wurde.

Das Abhören von Ereignissen von CairngormEventDispatcher ist keine bewährte Methode. Sie sollten CairngormEventDispatcher in keinem Fall aufrufen, da diese Klasse vorhanden ist, um die gesamte Mikroarchitektur richtig laufen zu lassen.

Ihre Ansicht (die Combobox) auf das Modell reagieren soll (das Ergebnis des Webservice) automatisch (oder über ein anderes Objekt in der Mitte [als PureMVC tut])

Was ich vorschlagen, um Ihr Problem schnell lösen cairngorm Verwendung ist:

  • den Webservice in den Dienst-Locator, um es eine Anwendungsebene Referenz zu haben, registrieren (dies zu tun, nur eine MXML-Komponente erstellen Servicelocator erstreckt, und Ihre Http oder WebService-Tag dort setzen in , dann weisen Sie ihm eine ID zu)

  • Ihr Modell Locator (die Klasse, die die Daten aus dem Web abgerufen speichert) erstellen und markieren Sie Ihre Datenliste angezeigt werden sollen in der Combobox [Bindable]

  • identifizieren, die mit SomeEvent.GETDATA als gekoppelte Befehl und:

  • Aufruf der Service im Service Locator in der Methode auszuführen registriert
  • IResponder Schnittstelle implementieren (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/IResponder.html) um das Ergebnis des Dienstes zu verarbeiten (registrieren Sie Ihren Befehl als Antwort des Dienstes in der Ausführungsmethode)
  • im Ergebnis Methode analysieren, um die Daten, die Sie vom Server hatten, sie dann in das Modell-Locator speichern (was leicht über den Singleton Accessor abgerufen werden kann)

  • in der Ansicht (die MXML-Datei die Combo halten) , binden Sie den Combo-Datenprovider an Ihre Modell-Locator-Datenliste (die vor einigen Zeilen bindefähig gemacht wurde), damit er auf die im Modell aufgetretenen Änderungen reagiert.

Spaß haben;)