--- 나는이 답변이이 질문에 대한 것이 아니라는 것을 알고 있지만,이 질문을 읽고 문제를 피하기 위해 공장과 같은 서비스를 처리하려는 사람들을 원합니다 ----
이를 위해서는 서비스 또는 팩토리를 사용해야합니다.
서비스는 중첩되지 않은 컨트롤러간에 데이터를 공유 하는 최선의 방법 입니다.
데이터 공유에 대한이 주제에 대한 아주 좋은 주석은 객체를 선언하는 방법입니다. 나는 그것에 대해 읽기 전에 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 document)이 다음과 같이 호출을 포함하도록 권장 (BEST PRACTICE)되기 때문입니다.
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
자식 컨트롤러가 부모 컨트롤러에서 개체를 변경할 수있게하려면 중첩 컨트롤러에 매우 유용합니다.
그러나 귀하의 경우 중첩 범위를 원하지 않지만 서비스에서 컨트롤러로 객체를 가져 오는 것과 비슷한 측면이 있습니다.
서비스 'Factory'가 있고 리턴 공간에 objectC를 포함하는 objectB를 포함하는 objectA가 있다고 가정 해 봅시다.
컨트롤러에서 objectC를 범위로 가져 오려는 경우 실수입니다.
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
작동하지 않습니다 ...
대신 점 하나만 사용하십시오.
$scope.neededObjectInController = Factory.ObjectA;
그런 다음 DOM에서 objectA에서 objectC를 호출 할 수 있습니다. 이것은 공장과 관련된 모범 사례이며, 가장 중요한 것은 예기치 않은 캐치 불가능 오류를 피하는 데 도움이됩니다.