Ich schreibe eine ziemlich komplexe JavaScript-Anwendung, die eine MVC-Architektur hat, die ich mit Prototype's implementiere Class
Unterstützung und das Modulmuster. Die Anwendung verwendet AJAX und das Observer-Muster. Ich erstelle meine Controller-Instanz, wenn das DOM geladen ist, übergebe ihr eine Ansicht und einige Modelle, die aus JSON-Daten erstellt wurden, und los geht's.
Ich habe jedoch festgestellt, dass ich meine Controller-Instanz als Eigenschaft auf der Window
Objekt - d.h. deklarieren Sie es ohne Verwendung von var
weil ich einen AJAX-Erfolgs-Callback habe, der das Ansichtsobjekt aktualisiert, das dem Controller gehört, und an diesem Punkt im Code ist meine nette kleine MVC-Welt nicht in Reichweite.
Ich untersuchte die Übergabe des View-Objekts als Parameter an die Funktion, die den AJAX-Code enthält, aber das wurde sehr unübersichtlich und hätte zu einigen schrecklichen Verstößen gegen das MVC-Muster geführt, z. B. zur Kopplung von Modell und View. Das war entsetzlich.
Dinge wie das Speichern meiner Controller-Instanz direkt auf Window
als schlechtes Benehmen? Für mich riecht das ein bisschen nach der Verwendung einer globalen Variablen, aber ich sehe keinen Weg, das zu umgehen.