--- Sé que esta respuesta no es para esta pregunta, pero quiero personas que lean esta pregunta y quieran manejar Servicios como Fábricas para evitar problemas al hacer esto ----
Para ello, deberá utilizar un Servicio o una Fábrica.
Los servicios son la MEJOR PRÁCTICA para compartir datos entre controladores no anidados.
Una muy buena anotación sobre este tema sobre el intercambio de datos es cómo declarar objetos. Tuve mala suerte porque caí en una trampa AngularJS antes de leer sobre eso, y estaba muy frustrado. Déjame ayudarte a evitar este problema.
Leí del "ng-book: El libro completo sobre AngularJS" que los modelos ng de AngularJS que se crean en controladores como datos desnudos ¡ESTÁN INCORRECTOS!
Se debe crear un elemento $ scope así:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
Y no así:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Esto se debe a que se recomienda (MEJOR PRÁCTICA) que el DOM (documento html) contenga las llamadas como
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Esto es muy útil para los controladores anidados si desea que su controlador secundario pueda cambiar un objeto desde el controlador principal ...
Pero en su caso no desea ámbitos anidados, pero hay un aspecto similar para obtener objetos de los servicios a los controladores.
Digamos que tiene su servicio 'Factory' y en el espacio de retorno hay un objeto A que contiene un objeto B que contiene un objeto C.
Si desde su controlador desea OBTENER el objectC en su alcance, es un error decir:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Eso no funcionará ...
En su lugar, use solo un punto.
$scope.neededObjectInController = Factory.ObjectA;
Luego, en el DOM puede llamar a objectC desde objectA. Esta es una práctica recomendada relacionada con las fábricas y, lo más importante, ayudará a evitar errores inesperados y no detectables.