--- So che questa risposta non è per questa domanda, ma voglio che le persone che leggono questa domanda e vogliono gestire servizi come Fabbriche per evitare problemi a farlo ----
Per questo è necessario utilizzare un servizio o una fabbrica.
I servizi sono la PRATICA MIGLIORE per condividere i dati tra controller non nidificati.
Un'ottima annotazione su questo argomento sulla condivisione dei dati è come dichiarare gli oggetti. Sono stato sfortunato perché sono caduto in una trappola di AngularJS prima di leggerlo, ed ero molto frustrato. Quindi lascia che ti aiuti a evitare questo problema.
Ho letto dal "ng-book: il libro completo su AngularJS" che i modelli ng di AngularJS creati nei controller come dati non corretti sono SBAGLIATI!
Un elemento $ scope dovrebbe essere creato in questo modo:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
E non così:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Questo perché si consiglia (BEST PRACTICE) che il DOM (documento html) contenga le chiamate come
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Ciò è molto utile per i controller nidificati se si desidera che il controller figlio sia in grado di modificare un oggetto dal controller principale ....
Ma nel tuo caso non vuoi ambiti nidificati, ma c'è un aspetto simile per ottenere oggetti dai servizi ai controller.
Diciamo che hai il tuo servizio 'Factory' e nello spazio di ritorno c'è un oggetto A che contiene oggetto B che contiene oggettoC.
Se dal controller si desidera ottenere l'oggetto C nel proprio ambito, è un errore dire:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Non funzionerà ...
Invece usa solo un punto.
$scope.neededObjectInController = Factory.ObjectA;
Quindi, nel DOM è possibile chiamare objectC da objectA. Questa è una best practice relativa alle fabbriche e, cosa più importante, contribuirà a evitare errori imprevisti e non irreparabili.