| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer Rossi Registriert seit: Feb 2004 Ort: Wien
Beiträge: 65
| Cairngorm mit PresentationModel
Hi, Verständisfrage: Ich verwende erstmalig Cairngorm (2.2) und zwar mit PresentationModel. Bitte keine Diskussion, warum :-)
So nun hier meine Frage: Angenommen, die PresentationView (die die Logik enthalten soll) muss wissen, wann und wie das Ergebnis vom Command fertig ist. D.h. erstens ist der "Zeitpunkt" wichtig, andererseits natürlich das Ergebnis. In manchen Fällen ist es sicher so, dass man den CairngormEvent feuert (Command, Delegate und Webservice arbeiten vor sich hin) und gut ist's. Manchmal aber eben nicht, zum Beispiel wenn ich einem Webservice einen Datensatz schicke und je nach Antwort ich unterschiedlich reagieren muss. Wie löst man sowas? Muss ich im PresentationModel EventListener auf das Model setzten, um die positiven Antworten vom Webservice abzufangen? Ist das nicht unsauber? Und: Wie bekomme ich einen Webservice-Call-Fault mit? Oder soll der Command, wenn er fertig ist, nicht nur das Model ändern, sondern auch noch einen eigenen Responder (sowohl im result, als auch im fault-Ergebnisfall) verwenden? Oder einen Result (oder Fault)-Event feuern? Danke und lg, Rossi |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Dec 2005 Ort: Oldenburg
Beiträge: 2.408
|
Verstehe das Problem nicht ganz ![]() Kannst Du ein Praxisbeispiel nennen? Du schreibst ja, je nach Antwort des Servers soll der Client was anderes machen/darstellen... Wäre ein Login bsp. eine solche Situation - oder meinst Du das anders? Dieses Vorgehen ist ansich nicht sonderlich schwer... Das Presentationmodel ruft eine Methode/Funktion auf, die entweder direkt was an der View ändert (ohne Einfluss eines Servers o.ä.) ODER es wird nen Event geschmissen welches im Controller verarbeitet wird. Wenn jetzt ein true vom Server kommt (oder ein false) wird dies in irgendeiner Weise direkt an Dein Model und somit an Dein PresentationModel gebunden. Dieses wiederum gibt die Änderung an die View weiter. (Wobei "weiter geben" sicherlich nicht richtig formuliert ist) lg, nico Ps: Auch wenn Du die Frage nicht haben wolltest - wieso Cairngorm? (Aus Interesse) Geändert von Nico B. (02-07-2011 um 13:20 Uhr) |
| | |
| | #3 (permalink) |
| Neuer Rossi Registriert seit: Feb 2004 Ort: Wien
Beiträge: 65
|
Danke für Deine Antwort! Also beispielsweise: Angenommen, es geht um eine Produktreservierung. Der User möchte Produkt A reservieren. Die View sagt das dem PM. Das PM muss dies dem Server mitteilen, dispatcht einen CairngormEvent, das Command spricht mit dem Server und bekommt eine von 2 Antworten (abgesehen von einem Server"fehler")
Das Command ist ja logikmäßig "dumm", es updated das Model (und dadurch ändert sich die View) - hat aber keine implementierte Logik (die ist ja im PM). In 1) und 2) ist es so, dass die View nicht sofort geupdated wird, sondern weitere Handlungen folgen müssen, je nachdem, welche Antwort vom Server kommt. Das Command kann daher im Fall 1) nicht selbstständig die neuen View-Daten vom Server holen. Darüber hinaus kann es auch nicht im Fall 2) selbstständig das PopUp zeigen. Es kommt zu keiner Modifikation des Models, weil die gewünschte Reservierung abgelehnt wurde. Wie bekommt nun das PM mit (egal ob 1) oder 2))? Wie löst man das elegant? Danke nochmals, Rossi p.s. :-) Cairngorm deswegen, ich mir zunächst Parsley, dann SpringActionscript genauer (und dann auch noch Robotlegs) angesehen habe. Grundsätzlich habe ich schon bei mehreren Projekten PureMVC verwendet, bin damit aber aufgrund des massiven Coding-Mehrfaufwandes nicht glücklich. Bei Parsley bin ich sowohl an der für *mich persönlich* unübersichtlichen Doku gescheitert - ich habe auch ein Hello-World-Example nicht zum Laufen bekommen. IoC versuche ich möglichst "zu Fuß" umzusetzen, halt mit Überreichen der notwendigen Referenzen. Ich weiß, das ganze geht über das Injection-Zeug, aber ganz ehrlich, da müsste ich mal ein Projekt vernünftiger Größenordnung sehen (und nicht so Mikro-Beispiele wie bei den Tutorials). Vielleicht entgeht mir der große "Aha"-Effekt, weil ich keine Unit-Tests mache, aber derzeit sehe ich keinen Mehrwert darin, weil der Konfigurationsaufwand auch nicht kleiner ist, als die paar Parameter per Hand zu überreichen. Vielleicht hab ich aber das Konzept auch nicht verstanden, kann gut sein. Ja, ich weiss, Cairngorm 2.2 ist nicht die beste Wahl, ist aber für mich (bis auf diese Fragestellung hier) recht plausibel und rasch einsetzbar. Und besser "irgendein" Framework als gar keines. Für die Zukunft möchte ich meine Kenntnisse da noch erweitern, werde das Projekt wahrscheinlich dann auch refactoren. Aber jetzt wollte ich mal starten und nicht noch länger mit Framework-Versteherei-und-Erstmalige-Konfiguriererei herumtun :-) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Dec 2005 Ort: Oldenburg
Beiträge: 2.408
|
Thema Framework: Schau Dir mal Swiz an (Bin selbst von Cairngorm umgestiegen)Thema Dein Problem: Ich hab's immer noch nicht ganz^^ - Es scheint, dass Du bereits alles hast um das "Problem" zu lösen ? |
| | |
| | #5 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Eine einfache Variante: du definierst en Interface bindable isPending:Boolean für alle Daten, die du zwischen Client und Server tauscht. Im Service Delegate kannst du diese Eigenschaft dann auf true/false setzen und die gebundenen Views können dann gelocked werden oder ... was auch immer du machen möchtest. Faults kannst du via Events durch die Anwendung propagieren. Oder du definierst ein komplexeres/granulareres Interface isPending, isSaved ... und lässt dieses von allen Modellen implementieren, die diese Funktionalitäten brauchen.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| cairngorm, presentation model |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| cairngorm: daten holen. | Grau | Flex programmieren | 12 | 25-05-2010 06:20 |
| [Cairngorm] Event Disptach ? | Nico B. | Flex programmieren | 19 | 19-06-2009 11:15 |
| cairngorm modular | Bennny | Flex allgemein | 10 | 23-02-2009 11:19 |
| addEventlistener vs. Cairngorm | Andreaz | Flex allgemein | 1 | 10-10-2008 13:10 |
| Cairngorm entladen | quaint | ActionScript 3 | 2 | 29-02-2008 15:28 |