Maison > Questions et réponses > le corps du texte
Si je partage une donnée avec plusieurs contrôleurs, dois-je enregistrer les données sur un contrôleur de niveau supérieur ou utiliser une usine pour enregistrer les données qui doivent être partagées ? Que se passera-t-il si j'utilise un service ?
为情所困2017-05-15 16:55:11
Cette question dépend de la pertinence commerciale des données au niveau de votre périmètre lorsque vous utilisez les données.
Fort, c'est-à-dire que vous êtes très sûr que lorsqu'une certaine portée l'utilise, vous pouvez certainement trouver une certaine portée parent en recherchant vers le haut, puis vous pouvez utiliser l'héritage de la portée pour la partager. Cependant, il est recommandé d'utiliser la syntaxe controller as
pour donner à chaque contrôleur un espace de noms unique afin d'éviter la duplication d'objet. En fait, vous pouvez même sauvegarder ces données dans $rootScope
pour les partager globalement (mais ce n'est pas recommandé, car plus le $rootScope
est léger, mieux c'est), ou vous pouvez avoir un contrôleur global de haut niveau pour les sauvegarder. .
Ce n'est pas fort, ce qui signifie que vous ne pouvez pas déterminer quand et où ces données seront utilisées, alors utilisez l'injection de dépendances. Pour les données pures, il est recommandé d'utiliser module.value
(données variables) ou module.constant
(données immuables). Bien sûr, vous pouvez également utiliser module.factory
pour renvoyer un objet (c'est la même chose que module.value
). module.service
est souvent utilisé pour renvoyer un constructeur, que vous pouvez utiliser pour générer différentes instances d'objet (différentes des autres services singleton).
En fait, module.value/constant/factory/service
sont toutes des variantes (sucre syntaxique) de module.provider
Lisez le chapitre sur l'injection de dépendances et les services dans la documentation officielle et vous comprendrez tout.
滿天的星座2017-05-15 16:55:11
Utiliser le service. Le service est généralement utilisé pour stocker des données. Factory est généralement utilisé pour appeler plusieurs services ~ ou renvoyer des méthodes. En fait, elles se ressemblent. Regarde ça ou ça
滿天的星座2017-05-15 16:55:11
En fait, je ne trouve aucune différence entre l'usine et le service. Si vous aimez l'objet js, choisissez le premier. Si vous aimez js oop, utilisez le service. . . Une traduction l'explique de cette façon.