In AngularJS - la risorsa $ dovrebbe essere utilizzata dal controller o dal servizio?

0

Tutta la documentazione, gli esempi e le esercitazioni che ho trovato su $resource lo stavano usando direttamente nel controller. Finora sto usando solo $http dai servizi e quei servizi sono ulteriormente utilizzati nei controller. Ho pensato che $resource dovrebbe sostituire $http e non il mio intero servizio. Il mio modo di pensare è sbagliato o gli esempi che ho trovato sono così banali che nessuno si è preoccupato di creare un servizio?

Ho sentito una volta la citazione

When you want to create a command line interface for your application and you need to copy code out of the controller, than the controller has too much logic and it should be in a service.

Ora, ovviamente questo dipende dalla complessità di un controller, assumiamo una semplice visualizzazione CRUD con il controller corrispondente. Sembra che $resource sia tutto ciò di cui ho bisogno e posso anche utilizzarlo per creare un'applicazione console senza preoccuparsi di nient'altro dal controller. Ma qualcosa dentro di me sta solo gridando quando voglio accedere ai dati ( $resource ) direttamente nel controller.

Dove si trova la linea tra quando è necessario un servizio quando è eccessivo?

    
posta peter 07.08.2015 - 00:11
fonte

2 risposte

1

Dipende dalla complessità e dagli obiettivi a lungo termine della tua app, ma nella mia esperienza, la tua migliore scommessa è quella di avvolgere le tue chiamate in risorse $ in un servizio poiché a un certo punto in futuro ti troverai pre / post elaborando l'input / output delle tue chiamate a risorse $ ed è meglio semplicemente collegare una nuova funzione (o parametro a una funzione esistente) al servizio che avvolge le tue chiamate a risorse $ piuttosto che implementare il codice di elaborazione in ogni controller in cui usi $ risorsa. All'inizio può sembrare che sia inutile aggiungere un wrapper che restituisca immediatamente la risposta $ resource, ma in seguito quando la complessità aumenterà, sarai contento di averlo fatto.

    
risposta data 07.08.2015 - 01:04
fonte
0

When you want to create a command line interface for your application and you need to copy code out of the controller, than the controller has too much logic and it should be in a service.

Il motivo per cui funziona è perché le tue UI dovrebbero essere indipendenti dal servizio. Una riga di comando è un'interfaccia utente e non è necessario un controller per implementarlo, dal momento che non sono necessari Views, View Models o qualsiasi altra cosa che sia parte integrante di un controller MVVM.

    
risposta data 07.08.2015 - 00:37
fonte

Leggi altre domande sui tag