--- Wiem, że ta odpowiedź nie dotyczy tego pytania, ale chcę, aby osoby, które przeczytały to pytanie i chciały obsługiwać usługi takie jak fabryki, aby uniknąć problemów z zrobieniem tego ----
W tym celu musisz skorzystać z Usługi lub Fabryki.
Usługi są NAJLEPSZĄ PRAKTYKĄ w zakresie udostępniania danych między nie zagnieżdżonymi kontrolerami.
Bardzo dobrą adnotacją na ten temat na temat udostępniania danych jest sposób deklarowania obiektów. Miałem pecha, ponieważ wpadłem w pułapkę AngularJS, zanim o tym przeczytałem, i byłem bardzo sfrustrowany. Pozwól, że pomogę ci uniknąć tego problemu.
Czytam z „ng-book: Cała książka o AngularJS”, że modele ng AngularJS, które są tworzone w kontrolerach jako same dane, są NIEPRAWIDŁOWE!
Element zakresu $ powinien zostać utworzony w następujący sposób:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
I nie tak:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Jest tak, ponieważ zaleca się (NAJLEPSZA PRAKTYKA), aby DOM (dokument HTML) zawierał wywołania jako
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Jest to bardzo pomocne dla kontrolerów zagnieżdżonych, jeśli chcesz, aby kontroler podrzędny mógł zmienić obiekt z kontrolera nadrzędnego ....
Ale w twoim przypadku nie chcesz zagnieżdżonych zakresów, ale istnieje podobny aspekt pobierania obiektów z usług do kontrolerów.
Załóżmy, że masz swoją usługę „Fabryka”, aw przestrzeni powrotnej znajduje się obiekt A zawierający obiekt B zawierający obiekt C.
Jeśli ze swojego kontrolera chcesz dostać obiekt C do swojego zakresu, błędem jest powiedzieć:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
To nie zadziała ...
Zamiast tego użyj tylko jednej kropki.
$scope.neededObjectInController = Factory.ObjectA;
Następnie w DOM można wywołać objectC z objectA. Jest to najlepsza praktyka związana z fabrykami, a co najważniejsze, pomoże uniknąć nieoczekiwanych i niemożliwych do złapania błędów.