--- Je sais que cette réponse n'est pas pour cette question, mais je veux que les personnes qui lisent cette question et qui veulent gérer des services tels que les usines n'aient pas de problèmes en faisant ceci ----
Pour cela, vous devrez utiliser un service ou une usine.
Les services sont les suivants BONNES PRATIQUES pour partager des données entre des contrôleurs non imbriqués.
Une très très bonne annotation sur ce sujet du partage des données est comment déclarer les objets. Je n'ai pas eu de chance car je suis tombé dans un piège d'AngularJS avant d'avoir lu ce sujet, et j'ai été très frustré. Laissez-moi donc vous aider à éviter ce problème.
J'ai lu dans le "ng-book : The complete book on AngularJS" que les ng-models AngularJS qui sont créés dans les contrôleurs en tant que bare-data sont FAUX !
Un élément $scope doit être créé comme ceci :
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
Et pas comme ça :
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Ceci est dû au fait qu'il est recommandé (BEST PRACTICE) que le DOM (document html) contienne les appels en tant que
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Ceci est très utile pour les contrôleurs imbriqués si vous voulez que votre contrôleur enfant puisse modifier un objet du contrôleur parent.....
Mais dans votre cas, vous ne voulez pas de scopes imbriqués, mais il y a un aspect similaire pour obtenir des objets des services vers les contrôleurs.
Disons que vous avez votre service 'Factory' et que dans l'espace de retour il y a un objetA qui contient un objetB qui contient un objetC.
Si, depuis votre contrôleur, vous voulez récupérer l'objet C dans votre champ d'application, c'est une erreur de dire :
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Ça ne marchera pas... Utilisez plutôt un seul point.
$scope.neededObjectInController = Factory.ObjectA;
Ensuite, dans le DOM, vous pouvez appeler l'objetC à partir de l'objetA. C'est une bonne pratique liée aux fabriques, et la plus importante, cela permettra d'éviter les erreurs inattendues et non rattrapables.
1 votes
Il existe de nombreux moyens, mais le meilleur est la montre angulaire. Toujours quand on utilise un framework, c'est la meilleure façon d'utiliser ses propres méthodes pour faire le travail. n'oubliez pas ceci
0 votes
J'ai trouvé ce blog très utile Blog