7

Ci scusiamo per il titolo vago;Filosofia AngularJS - controller come "windows" per i servizi

Ho ristrutturazione po 'del mio codice AngularJS, cercando di essere più "angolare" su di esso, e ho notato questo modello a spuntare un po':

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

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

In sostanza, il controller è in gran parte lì per dare il campo di applicazione di un riferimento al servizio in modo da vista può usare, come

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

così ho più di un paio di controller che non fanno altro che dipendono da determinati dati o servizi condivisi e servono a rendere riferimenti a quei servizi disponibili attraverso lo scopo.

C'è qualche svantaggio nell'usare questo design? Posso migliorare il mio pensiero? È questo il modo "angolare" di farlo?

Grazie per qualsiasi consiglio!

+0

Sono in una situazione abbastanza simile, anche se uso direttive piuttosto che controller. Mi sono sempre sentito abbastanza fiducioso nell'affrontare questo schema, ma questa è davvero una domanda molto interessante –

+0

Pensa a un controller principale che avvolge tutti i controller per servire questo servizio? –

risposta

4

Questo è il "modo angolare". I dati condivisi devono essere inseriti nei servizi, quindi iniettati dove necessario.

Mi piace pensare alle mie app Angular principalmente in termini di modelli (che di solito sono memorizzati nei servizi) e visualizzazioni. I controller sono solo la colla che ci consente di progettare/estrarre le parti dei nostri modelli di cui necessita una particolare interfaccia utente.

Inoltre, pensare a servizi come restituire un modello API, non un oggetto modello (a quote Josh).