Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-06-2010, 19:09   #1 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Question NumericStepper und MVC

Hi,

hoffe, das ist die richtige Ecke!

Ganz kurz:

Im View hab ich nen NumericStepper, dann nen Listener im Controller und eine Methode im Model, die den Wert vom NS setzt.

Problem, bzw. Frage ist: Wenn ich den NS anklicke, dann verändert er ja schon sofort seinen Wert und wartet nicht auf das Update vom Model... Kann ich das ändern/verhindern oder ist das einfach so? Streng genommen ist das dann ja nicht MVC-konform... :-/

Idee?

Danke + Gruss
T
twietee ist offline   Mit Zitat antworten
Alt 05-06-2010, 19:23   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.348
Der NumericStepper als Komponente wird selbst auch das MVC Pattern implementieren. Alles i.O., wenn du alles sauber kaspelst.
Omega Psi ist gerade online   Mit Zitat antworten
Alt 05-06-2010, 19:32   #3 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Question

Öhm, danke erstmal!

Aber wie jetzt? Das Problem ist halt, dass der NumericStepper seine(n) Wert/Status/Darstellung ändert, ohne auf die Bestätigung vom Model zu warten.

Denn _normalerweise_ sollte es ja so sein:

View wird geändert (Eingabe gemacht) => Controller kriegt's mit und sagt Model bescheid => Model ändert Status, sagt View bescheid => View ändert Darstellung...

Das haut ja nun nicht hin... und theoretisch könnte so eine Eingabe verloren gehen, bzw. View und Model stimmen nicht mehr überein... :-/

Gruss
twietee ist offline   Mit Zitat antworten
Alt 06-06-2010, 00:38   #4 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.401
Zitat:
Zitat von twietee Beitrag anzeigen
Denn _normalerweise_ sollte es ja so sein:

View wird geändert (Eingabe gemacht) => Controller kriegt's mit und sagt Model bescheid => Model ändert Status, sagt View bescheid => View ändert Darstellung...
Gruss
das ist viel zu dogmatisch gedacht.
zum beispiel muss das ganze geklicke in der view das model auch gar nicht interessieren, bis nicht irgendein submit event gefeuert wird..

und wenn du es trotzdem so haben musst: na dann mach es doch einfach : fange den change event deiner konponente ab - prüfe den eingabewert im model gegen und reagiere entsprechend darauf (wert zurücksetzen zb.)

wie wäre es ansonsten die view gleich mit value objects aus dem model zu bestücken, so dass die range erst gar nicht überschritten werden kann.

normalerweise gibt es in deinem fall nicht..

lg
mojave ist offline   Mit Zitat antworten
Alt 06-06-2010, 07:24   #5 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Lightbulb

...mann mann, da hättich auch selber drauf kommen können -- danke mojave!

Ich überprüfe jetzt einfach nochmal im View, ob die Änderung beim Model angekommen ist und setze, im Fall eines Scheiterns (View=>NumericStepper.value != Model=>InfoObjekt.value), den Wert des NumericSteppers auf den Wert des Models (=InfoObjektes) zurück...

Und schon ist alles wieder schön "Moock". Daaanke!

Gruss,
T
twietee ist offline   Mit Zitat antworten
Alt 07-06-2010, 16:08   #6 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
Naja

Eigentlich wurde MVC unter anderem deswegen bekannt weil sich damit asynchrone Szenarien und Eingabevalidierung gut lösen lassen. Ein "Modelabgleich" erledigt das prinzipiell, aber:

Wenn ein Fehler passiert bei der Eingabe dann wird der eigentliche Datenwert im Model nicht verändert und damit existiert ein inkonsitenter Zustand welchen aufzuheben nicht immer trivial ist (manchmal sind eben asyc. Aufrufe involviert, weiss die View ja nicht).

Aus Usability-Gründen denke ich sollte man konsequenterweise Komponenten so aufbauen das sofort der sichtbare Status verändert wird. Sprich beim Schicken des Befehls an den Controller wird die Darstellung zwar verändert aber es wird auch eine "ich bin am ändern"-Anzeige einblendet und diese wird erst bei Bestätigung der Daten diese Anzeige wieder entfernt.
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 08-06-2010, 20:18   #7 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Zitat:
Zitat von kaneda Beitrag anzeigen
Wenn ein Fehler passiert bei der Eingabe dann wird der eigentliche Datenwert im Model nicht verändert und damit existiert ein inkonsitenter Zustand welchen aufzuheben nicht immer trivial ist (manchmal sind eben asyc. Aufrufe involviert, weiss die View ja nicht).
Deshalb rückversichere ich die View doch, dass sie auf dem gleichen Stand wie das Model ist?!
Zitat:
Zitat von kaneda Beitrag anzeigen
Aus Usability-Gründen denke ich sollte man konsequenterweise Komponenten so aufbauen das sofort der sichtbare Status verändert wird. Sprich beim Schicken des Befehls an den Controller wird die Darstellung zwar verändert aber es wird auch eine "ich bin am ändern"-Anzeige einblendet und diese wird erst bei Bestätigung der Daten diese Anzeige wieder entfernt.
Generell hast du wohl Recht, jedoch glaube ich nicht, dass zwischen dem Klick eines NumericSteppers, der Änderung im Model und der Rückversicherung per InfoObjekt die Einblendung einer Grafik / eines Textes sinnvoll wäre. Der Nutzer würde wohl nur ein kurzes Flackern wahrnehmen, weil es so schnell geht...
twietee ist offline   Mit Zitat antworten
Alt 08-06-2010, 22:07   #8 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
Hmm...

Das die View auf dem gleichen Stand wie das Model ist funktioniert halt nur in trivialen Anwendungsfällen. Okay. bei deinem Stepper wirds wohl oft passen, aber willst du Fehleingaben, Limits, Sprünge (sagen wir der Numericstepper geht in unregelmässigen schritten) mit visuellem Response (Animation, Rahmen, hintergrund ausgrauen, ... was auch immer) dann ist dort ein komplexeres Protokoll bzw. es sind angepasste Stepper notwendig (die dann mit Response arbeiten müssen).

Eine Statusanzeige, also ob der Wert tatsächlich gespeichert wurde ist eigentlich mehr Usabilitydenken denn MVC. Natürlich gehts auch ohne. Man kann sowas aber auch nur dezent durch leichte Akzente anzeigen bzw. sehr kleine Veränderungen die durch ihren zeitl. Begrenzungen klar sind. Das es meistens nur wenige Sekunden(wenn überhaupt) dauert stimmt wohl aber es gibt immer den Kunden mit der langsamen Leitung oder aus Australien (oder Schwarzwald) bei dem dann die Applikation komisch läuft.

Wenn der Benutzer ein kurzes Flackern wahrnimmt ist das doch auch cool: die Applikation zeigt das sie etwas macht - und das sogar schnell..

Unabhängig davon: Es wird bei lokaler Validierung (im Controller, ohne Server) ja sofort eine Antwort kommen. Sprich: Das Flackern wird gar nicht sichtbar sein.
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 08-06-2010, 22:26   #9 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Smile

Okay, verstehe natürlich, was du meinst.

Aber auch wenn die Sache online geht, solange sie nicht riesen-komplex, zeit-oder-anders-kritisch ist, kann man wohl auf komplexe Protokolle verzichten -- denke ich. Außerdem ist das Stepper-Beispiel wirklich simpel, ich hatte auch darüber nachgedacht, mir meinen eigenen zu schreiben, war allerdings ein bisschen fowl und fand die Lösung mit dem "nachher korrigieren" ganz "angenehm". Wenn das nicht hinhaut, wie gewollt, kann ich's ja -- dank MVC ohne alles anfassen zu müssen -- immer noch ändern!

Gruss,
T
twietee ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
mvc, numericstepper

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
NumericStepper Jochi ActionScript 2 1 03-05-2008 12:49
NumericStepper RhettButler Flash 8 9 08-05-2007 22:09
Rechnen mit NumericStepper??? bluscht Komponenten und SmartClips 4 03-07-2006 22:38
NumericStepper via AS to php to Mail m.friedli Flash MX 2004 1 27-04-2004 16:50
NumericStepper via AS to php to Mail m.friedli Flash MX 2004 4 20-04-2004 15:02


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele