--- Ich weiß, dass diese Antwort nicht für diese Frage ist, aber ich möchte, dass Leute, die diese Frage lesen und mit Diensten wie Fabriken umgehen, Probleme damit vermeiden ----
Dazu müssen Sie einen Service oder eine Fabrik nutzen.
Die Dienste sind die BESTE PRAXIS , um Daten zwischen nicht verschachtelten Controllern auszutauschen .
Eine sehr sehr gute Anmerkung zu diesem Thema über die gemeinsame Nutzung von Daten ist das Deklarieren von Objekten. Ich hatte Pech, weil ich in eine AngularJS-Falle geraten bin, bevor ich darüber gelesen habe, und ich war sehr frustriert. Lassen Sie mich Ihnen helfen, diese Probleme zu vermeiden.
Ich habe aus dem "ng-book: Das komplette Buch über AngularJS" gelesen, dass AngularJS ng-Modelle, die in Controllern als Bare-Data erstellt werden, FALSCH sind!
Ein $ scope-Element sollte folgendermaßen erstellt werden:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
Und nicht so:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Dies liegt daran, dass empfohlen wird (BEST PRACTICE), dass das DOM (HTML-Dokument) die Aufrufe als enthält
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Dies ist für verschachtelte Controller sehr hilfreich, wenn Sie möchten, dass Ihr untergeordneter Controller ein Objekt vom übergeordneten Controller ändern kann.
In Ihrem Fall möchten Sie jedoch keine verschachtelten Bereiche, aber es gibt einen ähnlichen Aspekt, um Objekte von Diensten an die Controller zu übertragen.
Nehmen wir an, Sie haben Ihren Service 'Factory' und im Rückgabebereich befindet sich ein ObjektA, das ObjektB enthält, das ObjektC enthält.
Wenn Sie von Ihrem Controller aus das Objekt C in Ihren Bereich holen möchten, ist es ein Fehler zu sagen:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Das wird nicht funktionieren ...
Verwenden Sie stattdessen nur einen Punkt.
$scope.neededObjectInController = Factory.ObjectA;
Anschließend können Sie im DOM objectC von objectA aus aufrufen. Dies ist eine bewährte Methode für Fabriken und hilft vor allem dabei, unerwartete und nicht auffindbare Fehler zu vermeiden.