web-dev-qa-db-fra.com

AngularJS: contrôleur vs service

J'ai lu quelques articles concernant l'utilisation appropriée des entités angularjs: services, usines, contrôleurs et directives.

Ma préoccupation particulière est la comparaison d'un contrôleur et d'un service. Cependant, aucun des messages ne m'a dit ce qu'un contrôleur peut faire ce que le service ne peut pas et vice versa.

Cela peut-il être répertorié ou s'agit-il simplement d'être canonique dans l'utilisation angulaire?

28
user776686

Contrôleurs sont généralement utilisés pour être liés à une vue. Les contrôleurs gèrent le cycle de vie d'une vue et doivent être considérés comme des contrôleurs de vue. Un nouveau contrôleur sera créé pour chaque instance d'une vue, ce qui signifie que si vous vous éloignez d'une certaine vue, puis revenez en arrière - ou si vous avez plus d'une fois une instance d'une certaine vue, un nouveau contrôleur sera créé à chaque fois .

Les services sont généralement utilisés comme logique métier de votre application. Les services sont similaires aux singletons dans le sens où ils sont créés une seule fois, et l'instance est maintenue tout au long du cycle de vie de votre application. C'est un bon endroit pour placer vos fonctions logiques dont de nombreuses vues ou composants auront besoin, et également conserver le cache global qui doit être accessible dans plusieurs zones de votre application.

69
Gil Moshayof

contrôleurs - responsabilités: initialiser la vue, arbitrer l'interaction entre la vue/portée et les services. Il dépend de la vue et du modèle, mais se préoccupe davantage de la vue et de son fonctionnement.

services - responsabilités: fournit des services commerciaux qui dépendent pas de la vue ou du contrôleur. Sa principale préoccupation est de fournir des services, quel que soit le consommateur (contrôleur/vue/autres services).

Je ne suis pas convaincu si la persistance des facteurs dans les différences.

13
pixelbits

Selon la documentation AngularJS, https://docs.angularjs.org/guide/concepts

Les contrôleurs concernent la logique métier associée à la vue. Les services , quant à eux, concernent une logique métier réutilisable indépendante des vues.

9
Grateful

En plus de ce qui a été dit ci-dessus. Les contrôleurs peuvent également conserver la logique de votre application alors que l'application n'est pas si grande. Mais au fur et à mesure que votre application se développe, vous devrez déplacer la logique pour utiliser les services (comme l'usine). Cela permettrait aux variables et fonctions nécessaires autour de votre application d'être facilement accessibles.

1
charles okojie