2009-05-09 8 views
1

Bis vor kurzem habe ich Cairngorm als Framework für Flex verwendet. In diesem letzten Projekt bin ich jedoch zu Mate gewechselt. Es verwirrte mich immer noch ein wenig, da ich mich daran gewöhnt hatte, Daten im Modell zu lassen. Ich habe ein paar Komponenten, die auf dem gleichen Datensatz (Sammlung) beruhen. In der Komponente sendet der Erstellungsabschluss-Handler ein 'GiveMeMyDataEvent', das von einer der Ereignismaps abgefangen wird. Jetzt hätte ich in cairngorm in meiner Befehlsklasse einen kurzen Blick in das Modell geworfen, um zu entscheiden, ob ich die Daten vom Server holen muss oder nicht und dann entweder die Daten vom Modell zurückgegeben oder die db genannt habe. Wie würde ich das in Mate tun? Oder gibt es einen besseren Weg dazu? Ich versuche die Daten zu nutzen, die bereits vom Server empfangen wurden, aber ich bin mir nicht sicher, ob ich die Daten geladen habe oder nicht. Wenn eine Komponente, die dieselben Daten verwendet, instanziiert wurde, lautet die Antwort ja, andernfalls nein. Jede Hilfe/Hinweise sehr geschätzt.Mate-Framework - Überprüfen Sie die Daten vor dem Remote-Aufruf

Antwort

5

Die meisten Dinge in Mate sind indirekt. Sie haben Manager, die Ihre Daten verwalten, und Sie richten Injektoren (die Bindungen sind) zwischen den Managern und Ihren Ansichten ein. Die Injektoren stellen sicher, dass Ihre Ansichten mit Ihren Managern synchronisiert sind. Auf diese Weise haben die Ansichten immer die neuesten Daten. Ansichten werden nicht als direkte Folge des Absendens eines Ereignisses aktualisiert, sondern als indirekte Konsequenz.

Wenn Sie neue Daten laden möchten, senden Sie ein Ereignis, das von einer Ereigniszuordnung abgefangen wird, die wiederum einen Dienst aufruft, der Daten lädt und an die Ereigniszuordnung zurückgibt und die Ereigniszuordnung in das entsprechende Verzeichnis einfügt Manager.

Wenn der Manager aktualisiert wird, stellen die Injektoren sicher, dass die Ansichten aktualisiert werden.

Durch die Verwendung von Injektoren haben Sie garantiert immer die neuesten Daten in Ihren Ansichten. Wenn die Ansichten Daten enthalten, werden die Daten geladen - es sei denn, Sie müssen regelmäßig aktualisieren. In diesem Fall müssen Sie bestimmen, ob Daten vorhanden sind ist veraltet und löst ein Ereignis aus, das einen Serviceaufruf auslöst, der ein Update auslöst, das die Injektoren dazu veranlasst, die neuen Daten erneut in die Ansichten zu pushen, und sie abzurunden.

Kurz gesagt, die Antwort auf Ihre Frage ist, dass Sie sicherstellen müssen, dass Sie Injektoren richtig verwenden. Wenn dies eine zu hohe Antwort für Sie ist, weiß ich, dass Sie mehr Hilfe in der Mate forums bekommen können.

0

Ich stieß auf eine ähnliche Situation mit der App, an der ich gerade arbeite, und stellte fest, dass sie leicht in Mate implementiert werden kann, wenn Sie darüber nachdenken, zwei Ereignisse zu haben.

Das erste Ereignis ist so etwas wie DataEvent.REFRESH_MY_DATA. Dieses Ereignis wird von einem DataManager gehandhabt, der entscheiden kann, ihn entweder zu ignorieren (da Daten bereits im Client vorhanden sind und als aktuell betrachtet werden), oder der Manager kann ein Ereignis wie DataEvent.FETCH_MY_DATA versenden.

Das Ereignis FETCH_MY_DATA löst einen Serviceaufruf in der Ereigniszuordnung aus, der einen Wert im Manager aktualisiert. Dieses Update ist Eigentum-Injektion in die Ansicht, glückliche Tage :)

Verwandte Themen