--- Я знаю, что этот ответ не для этого вопроса, но мне нужны люди, которые читают этот вопрос и хотят работать с такими службами, как фабрики, чтобы избежать проблем с этим ---- сильный>
Для этого вам нужно будет использовать Сервис или Фабрику.
Эти службы - это НАИЛУЧШАЯ ПРАКТИКА для обмена данными между невложенными контроллерами.
Очень хорошая аннотация по этой теме о совместном использовании данных - как объявлять объекты. Мне не повезло, потому что я попал в ловушку AngularJS еще до того, как прочитал об этом, и был очень разочарован. Так что позвольте мне помочь вам избежать этой неприятности.
Я прочитал из "ng-book: Полная книга по AngularJS", что AngularJS ng-модели, которые создаются в контроллерах как голые данные, НЕПРАВИЛЬНЫ!
Элемент $ 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.
Это очень полезно для вложенных контроллеров, если вы хотите, чтобы ваш дочерний контроллер мог изменять объект из родительского контроллера ....
Но в вашем случае вам не нужны вложенные области, но есть аналогичный аспект для передачи объектов из служб в контроллеры.
Допустим, у вас есть служба Factory, а в пространстве возврата есть объектA, который содержит объектB, содержащий объектC.
Если из вашего контроллера вы хотите ПОЛУЧИТЬ объект C в свою область видимости, будет ошибкой сказать:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Это не сработает ... Вместо этого используйте только одну точку.
$scope.neededObjectInController = Factory.ObjectA;
Затем в DOM вы можете вызвать objectC из objectA. Это оптимальная практика для заводов, и, что наиболее важно, она поможет избежать неожиданных и не обнаруживаемых ошибок.
person
AFP_555
schedule
24.06.2014