Ich arbeite mit AngularJS für mein neuestes Projekt. In der Dokumentation und Tutorials werden alle Modelldaten in den Controller-Bereich gesetzt. Ich verstehe, dass es dort sein muss, um für den Controller und damit innerhalb der entsprechenden Ansichten verfügbar zu sein.
Ich glaube aber nicht, dass das Modell dort tatsächlich umgesetzt werden sollte. Es könnte komplex sein und zum Beispiel private Attribute haben. Außerdem könnte man es in einem anderen Kontext/App wiederverwenden wollen. Wenn man alles in den Controller packt, bricht das MVC-Muster völlig.
Das Gleiche gilt für das Verhalten eines jeden Modells. Wenn ich verwenden würde DCI-Architektur und das Verhalten vom Datenmodell zu trennen, müsste ich zusätzliche Objekte einführen, um das Verhalten zu speichern. Dies würde durch die Einführung von Rollen und Kontexten geschehen.
DCI == D ata C ollaboration I nteraktion
Natürlich könnten die Modelldaten und das Verhalten mit einfachen Javascript-Objekten oder einem beliebigen "Klassen"-Muster implementiert werden. Aber was wäre der AngularJS Weg, es zu tun? Mit Diensten?
Es läuft also auf diese Frage hinaus:
Wie implementiert man Modelle, die vom Controller entkoppelt sind, gemäß den Best Practices von AngularJS?