| |||||||
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) |
| =) Registriert seit: Jun 2003
Beiträge: 499
|
hallo welt und guten morgen! ich beschäftige mich gerade mit dem Model-Presenter-View Model der objektorientierten Programmierung in AS und bin in leichten startschwierigkeiten: 1. was genau macht der Presenter? das model arbeitet mit den daten, ist es fertig ruft es über listener die view herbei die sich die daten schnappt und anzeigt. die view ist auch dazu da um eingaben etc abzufangen. und der presenter? was macht der? bzw wo in der reihe zwischen "klick-änderung berechnen-anzeigen" steht er? 2. flash scheint nicht das zu machen was es soll ( bzw.: er macht das was ich ihm gesagt habe...): Code: _global.HelpCenterModel = function() {
}
HelpCenterModel.prototype.ladeXML = function(xmldatei) {
// XML laden
meinXML = new XML();
meinXML.ignoreWhite = true;
meinXML.load(xmldatei);
// gibt XML an tree
meinXML.onLoad = function() {
meinTree.dataProvider = meinXML;
}
} wenn ich die aber aufrufen will: Code: init = function(){
// initialisierung
//füllt tree mit daten die model geholt hat
//test
trace(XMLDOK);
HelpCenterModel.ladeXML(XMLDOK);
}
init(); stehe grad auf dem schlauch. was hab ich flasch gemacht/ übersehn?
__________________ x 600.6 y 123.3 |
| | |
| | #2 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
diese pattern kenn ich noch gar nicht kenne nur MVC(modell view controll) haste da mal material zu wo man sich einlesen kann? mfg alex
__________________ TVNEXT Solutions |
| | |
| | #3 (permalink) |
| =) Registriert seit: Jun 2003
Beiträge: 499
|
... probier zum beispiel http://www.martinfowler.com/eaaDev/M...Presenter.html wenn ich gute erklärungen gefunden hätte würde ich nciht fragen
__________________ x 600.6 y 123.3 |
| | |
| | #4 (permalink) |
| =) Registriert seit: Jun 2003
Beiträge: 499
|
ok ich habe meinen fehler gefunden: ich sollte vielleicht die ganzen konsturktoren aufrufen um damit arbeiten zu können! Code:
init = function(){
// initialisierung
this.model = new HelpCenterModel();
this.presenter = new HelpCenterPresenter();
//füllt tree mit daten die model geholt hat
//test
trace(XMLDOK);
model.ladeXML(XMLDOK);
}
init(); bleibt nur die verständnis frage wegen des presenters (s. erstes post von mir)
__________________ x 600.6 y 123.3 |
| | |
| | #5 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
das MVP ist eine Modifikation des MVC patterns es ist hilfreich wenn du diese pattern kennst. das prinzip hinter dem ganzen ist recht einfach die View erhält ein event und ruft entsprechend eine function beim Presenter auf dieser wiederum modifiziert die Modell notwendigen daten das Modell seinerseits aktualisiert die View. es ist praktisch ein kreislauf. View.input->Presenter.action->Model.setData->View.output so kann man es sich sehr vereinfacht vorstellen. mfg alex
__________________ TVNEXT Solutions |
| | |
| | #6 (permalink) | |
| =) Registriert seit: Jun 2003
Beiträge: 499
| Zitat:
ok view gibt an presenter weiter was wo wie geklickt wurde. presenter verarbeitet das und ruft gegebenfalls methoden in model auf um die daten zu ändern etc. sind die daten in model geändert, sendet das model nen rundruf aus. view "hört" das und zeigt die änderung an. korrekt?
__________________ x 600.6 y 123.3 | |
| | |
| | #7 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
exakt das ist die functionsweiße von MVC und MVP. das gibt ne 1 . beim MVP allerdings verarbeitet nicht die View das Event sondern die View delegiert an die Presenter Class weiter und diese entscheided was nun passieren soll. eigentlich recht simple das ganze was etwas kompliziert ist ist die verwebung aller klassen das alle voneinander wissen. mfg alex
__________________ TVNEXT Solutions |
| | |
| | #8 (permalink) |
| =) Registriert seit: Jun 2003
Beiträge: 499
|
super das prinzip habe ich also schonnal verstanden, aber ich seh schon es dauert etwas bis man es auch richtig anwenden kann.... jedenfalls: beim einsetzen der TreeView komponente stosse ich auf schwierigkeiten (mal wieder): laut macromedia muss das change event an nen objekt gebunden sein Code: listenerObject = new Object();
listenerObject.change = function(eventObject){
trace(eventObject.target.selectedItem.attributes.label + " wurde ausgewählt");
};
meinTree.addEventListener("change", listenerObject); mache ich aber Code: model.change = function() {} Code: model.prototype.change = function() {} ich hab es jetzt erstmal als eigenes objekt drin stehen (s. code oben) wüsste aber gern wie ich es in die struktur (MVP) einbinden kann. ziel ist, dass die view(?) beim anklicken einer sache im baum verschiedene, vorher vom model eingelesene, attribute an einen, von der view produzierten und platzierten, container clip übergibt, um sie dann dort anzeigen zu lassen. puh wirkt kompliziert, ist es auch
__________________ x 600.6 y 123.3 |
| | |
| | #9 (permalink) | |
| - Registriert seit: Jul 2003
Beiträge: 714
| Zitat:
Beispiel: ActionScript:
Ist jetzt nur ein gescripte, müsste aber klappen. Natürlich rufts du den Controller nicht über new Controller() auf sondern in einer richtige Anwendung erstellst du eine Controller/Presenter Instanz. Vom Presenter/Controller dann an Model senden und dann halt updaten. Ich hoffe ich habe mal Recht. cu messingfeld Geändert von messingfeld (30-08-2004 um 15:47 Uhr) | |
| | |
| | #11 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
na das sollte in etwa so wie messing das sagt loofen das event change wird allerdings an die View angehängt und diese delegiert weiter an den Presenter in etwa so PHP-Code:
__________________ TVNEXT Solutions |
| | |
| | #12 (permalink) |
| - Registriert seit: Jul 2003
Beiträge: 714
|
Sieht es nicht schöner aus wenn der Presenter das "change" - Ereignis direkt abfängt. ActionScript:
Da du über: ActionScript:
ja auch schon den Presenter festlegst. Du schaltest ja einfach eine (in diesem Beispiel) unnötige Funktion zwischen. Wie sieht es eigentlich da genau mit dem Verantwortlichkeiten aus? cu messingfeld |
| | |
| | #13 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
sicherlich kann man das machen aber das entspricht nicht der implementierung eines MVP pattern. In der Praxis wird schonmal auf den Controller/Presenter verzichtet, aber es ist schon sinnvoll sich an die Patterns weit möglichst zu halt. das beispiel ist auch nur eine mini anwendung um das prinzip zu verdeutlichen. das die eventmethode zum View gehört hat den hintergrund das die tree komponente in diesem fall teil von view ist und aus kapselungsgründen sollte auch das dazugehörige event inerhalb der View bleiben. Das macht auch Sinn wenn es darum geht sich später einmal durch den code zu wühlen denn dann sucht mann mit unter vergebns im View nach dem Event und das steht aber im Presenter/Controller. das sollte vermieden werden. Ich würde das event auch nicht als prototypen implemtieren, das event sollte immer userdefined sein, also vom user zugewiesen werden. Das beispiel ist schon der richtige weg .mfg alex
__________________ TVNEXT Solutions |
| | |
| | #14 (permalink) |
| =) Registriert seit: Jun 2003
Beiträge: 499
|
klappt bis jetzt alles hervorragend! danke nochmal dafür! falls ich grobe programm-aufbau schnitzer drin habe gebt mir bitte bescheid. ich bin noch am lernen und bin jetzt nicht gerade mit OOP erfahrung gesegnet... PHP-Code:
__________________ x 600.6 y 123.3 Geändert von dante (01-09-2004 um 09:09 Uhr) |
| | |
| | #15 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
So ich hab ma ein kleines beispeil zusammen geclickert ist im anhang. das beispiel ist absolut rudimentär und folgt strikt dem MVP Pattern. In der Praxis würde man es sicherlich noch etwas simpler machen es ist wie gesagt etwas recht simples. schau es dir einfach mal an. Ich habe keinen Broadcaster eingesetzt was sicherlich bei etwas komplexeren zusammenhängen durchaus denkbar wäre. mfg alex download
__________________ TVNEXT Solutions |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |