7

Entschuldigung für den vagen Titel;AngularJS Philosophie - Controller als "Windows" zu Diensten

Ich habe einige meiner AngularJS Code Umstrukturierung und versuchte, mehr „Angular“ darüber zu sein, und ich habe dieses Muster bemerkt einiges Aufspringen:

app.service("someService", function(...) { 
    ... 
} 

app.controller("ControllerForThisSection", function($scope, someService) { 
    $scope.someService = someService 
} 

Grundsätzlich ist der Controller meist dort dem Umfang einen Verweis auf den Dienst zu geben, damit eine Ansicht, sie verwenden kann, wie

<div ng-if="someService.status"> 
    .... 
</div> 

so habe ich mehr als ein paar Controller, die nichts mehr tun, als auf bestimmte freigegebenen Daten oder Dienste abhängen und dienen zu machen Verweise auf diese Dienste, die durch den Umfang verfügbar sind.

Gibt es Nachteile bei der Verwendung dieses Designs? Kann ich mein Denken verbessern? Ist das der "eckige" Weg, es zu tun?

Danke für jede Beratung!

+0

Ich bin in einer ziemlich ähnlichen Situation, obwohl ich Richtlinien anstelle von Controllern verwende. Ich war immer sehr zuversichtlich, dass ich mich für dieses Muster entschied, aber das ist eine sehr interessante Frage. –

+0

Denken Sie an einen Hauptcontroller, der alle Controller umschließt, um diesen Dienst zu bedienen? –

Antwort

4

Dies ist der "eckige Weg". Freigegebene Daten sollten in Dienste eingefügt und dann bei Bedarf injiziert werden.

Ich denke gerne an meine Angular Apps hauptsächlich in Bezug auf Modelle (die normalerweise in Diensten gespeichert sind) und Ansichten. Die Controller sind nur der Leim, mit dem wir die Teile unserer Modelle projizieren/extrahieren können, die eine bestimmte UI-Ansicht benötigt.

Denken Sie auch an Services als Rückgabe eines Modells API, kein Modellobjekt (zu quote Josh).