--- Eu sei que esta resposta não é para esta pergunta, mas quero que as pessoas que leem essa pergunta e queiram lidar com serviços como fábricas evitem problemas ao fazer isso ----
Para isso, você precisará usar um Serviço ou uma Fábrica.
Os serviços são a MELHOR PRÁTICA para compartilhar dados entre controladores não aninhados.
Uma anotação muito boa sobre esse tópico sobre compartilhamento de dados é como declarar objetos. Tive azar porque caí em uma armadilha do AngularJS antes de ler sobre isso e fiquei muito frustrado. Então, deixe-me ajudá-lo a evitar esse problema.
Eu li no "ng-book: O livro completo sobre o AngularJS" que os modelos ng do AngularJS criados nos controladores como dados nus estão ERRADOS!
Um elemento $ scope deve ser criado assim:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
E não é assim:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Isso ocorre porque é recomendado (BEST PRACTICE) para o DOM (documento html) conter as chamadas como
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Isso é muito útil para controladores aninhados se você desejar que seu controlador filho possa alterar um objeto do controlador pai ....
Porém, no seu caso, você não deseja escopos aninhados, mas há um aspecto semelhante para obter objetos dos serviços para os controladores.
Digamos que você tenha o seu serviço 'Factory' e, no espaço de retorno, existe um objetoA que contém o objetoB que contém o objetoC.
Se do seu controlador você deseja colocar o objetoC no seu escopo, é um erro dizer:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Isso não vai funcionar ...
Em vez disso, use apenas um ponto.
$scope.neededObjectInController = Factory.ObjectA;
Em seguida, no DOM, você pode chamar objectC a partir de objectA. Essa é uma prática recomendada relacionada às fábricas e, o mais importante, ajudará a evitar erros inesperados e não alcançáveis.