Heutzutage spiele ich mit MVC pattern unter Verwendung AngularJS. Ich bin viel verwirrt zwischen Controller, Modellen und Ansichten. Was ich bisher verstanden habe, ist, dass wir im MVC-Muster folgende drei haben:AngularJS: Mehrere Controller zu einer Ansicht
1) Modell: Modell ist eine der Logik, oder Datenbank oder die Daten selbst. In Anguarljs werden Modelle mithilfe von Fabriken oder Dienstleistungen erstellt.
2) Ansichten: Ansicht ist, wie unsere Daten für den Benutzer dargestellt oder angezeigt werden. Dies repräsentiert einfach unser Modell für den Benutzer.
3) Controller: Controller ist etwas, das steuert. Wie auf Coding Horror geschrieben, ist Controller der Kopf der Anwendung. Der Controller entscheidet, was die Benutzereingabe war, wie sich das Modell als Ergebnis dieser Eingabe ändern muss und welche resultierende Ansicht verwendet werden sollte.
Also mit Blick auf die Definition von Controller kann ich sagen, Controller ist der Chef. Es wird verantwortlich sein für alles, was passieren wird. In meiner Anwendung habe ich paar Modelle wie Projekt, Form, Notiz usw.. Was ich tue ist, ich habe factories
für jedes Modell erstellt. z.B. ProjectFactory, ShapeFactory, NoteFactory. Und ich habe controller
für jeden von ihnen, d. H. ProjectController, ShapeController, NoteController erstellt, um Sachen in Bezug auf Projekt, Form und Notiz zu steuern. Ich bin mir nicht sicher, ob es korrekt ist oder nicht.
In meiner Anwendung habe ich auch ein paar Ansichten, d. H. map-view.html, project-view.html
. Für jede Ansicht gibt es Controller MapViewController, ProjectViewController. Meine Projektansicht benötigt Projekte und Notizen. Also muss ich ProjectViewController, ProjectController, NoteController in meinem Projekt-view.html verwenden. Ich weiß nicht, wie ich das machen kann. Ich kann eine Leiter von Controller wie folgt erstellen:
<div ng-controller="ProjectController">
<div ng-controller="NoteController">
<div ng-controller="ProjectController">
Project view goes here
</div>
</div>
</div>
Aber es ist nicht ein guter Weg, dies zu tun morgen verursachen werde ich große Anzahl von Modell haben, so kann ich nicht diese Leiter schaffen und auch den Umfang der Eltern den Zugriff auf wird ein Schmerz im Rücken sein. Es wird wie:
$socpe.$parent.$parent.$parent.data='Set data.'
Antoher apporach ist, dass ich Dienste wie ProjectService, ShapeService und Noteservice und nutzen diese Dienste in ProjectViewController
erstellen können. Aber das führt mich zur Verwirrung, da all die Dinge, die von den Thesen services
erledigt werden, von controller
gehandhabt werden sollten und diese Controller an mehreren Stellen/Ansichten verwendet werden sollten. Ist es korrekt oder die Controller ich meine angularjs Controller sind anders als MVC Pattern Controller? Ich bin mit all diesen Konzepten verwirrt.
Letzteres ist der richtige Ansatz, meiner Meinung nach.Eine Ansicht, ein Controller und injizieren Sie die Dienste, die Sie benötigen. Das hält alles schön und sauber. – shammelburg
Letzteres führt mich dazu http://stackoverflow.com/questions/36257080/angularjs-sharing-data-across-controllers –
Je nachdem, wie Sie auf Ihre Daten zugreifen, JSON-Datei oder HTTP, ist nichts falsch mit dem Aufruf der Daten, wenn sich die Ansicht ändert. Wenn die Daten identisch sind und sich nie ändern, verwenden Sie JSON, andernfalls verwenden Sie HTTP. – shammelburg