--- Я знаю, что этот ответ не для этого вопроса, но я хочу, чтобы люди, которые читают этот вопрос и хотят обращаться с такими Сервисами, как Фабрики, чтобы избежать проблем с этим ----
Для этого вам нужно будет использовать Сервис или Фабрику.
Эти сервисы - ЛУЧШАЯ ПРАКТИКА для обмена данными между не вложенными контроллерами.
Очень хорошая аннотация на эту тему об обмене данными о том, как объявлять объекты. Мне не повезло, потому что я попал в ловушку AngularJS, прежде чем я прочитал об этом, и я был очень расстроен. Итак, позвольте мне помочь вам избежать этой проблемы.
Из "ng-book: полная книга по AngularJS" я прочитал, что ng-модели AngularJS, созданные в контроллерах как голые данные, НЕПРАВИЛЬНЫ!
Элемент $ scope должен быть создан следующим образом:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
И не так:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Это потому, что рекомендуется (ЛУЧШАЯ ПРАКТИКА) для DOM (html-документ) содержать вызовы как
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Это очень полезно для вложенных контроллеров, если вы хотите, чтобы ваш дочерний контроллер мог изменять объект из родительского контроллера ....
Но в вашем случае вам не нужны вложенные области видимости, но есть аналогичный аспект для передачи объектов из сервисов в контроллеры.
Допустим, у вас есть сервис «Фабрика», а в возвращаемом пространстве есть объект A, который содержит объект B, который содержит объект C.
Если из вашего контроллера вы хотите получить objectC в вашу область, было бы ошибкой сказать:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Это не сработает ...
Вместо этого используйте только одну точку.
$scope.neededObjectInController = Factory.ObjectA;
Затем в DOM вы можете вызвать objectC из objectA. Это лучшая практика, связанная с фабриками, и самое главное, она поможет избежать непредвиденных и неуловимых ошибок.