--- Ich weiß, dass diese Antwort nicht für diese Frage ist, aber ich möchte, dass Leute, die diese Frage lesen und Dienste wie Fabriken handhaben wollen, Schwierigkeiten vermeiden, indem sie dies tun ----
Hierfür müssen Sie einen Dienst oder eine Fabrik verwenden.
Die Dienste sind die BESTE PRAXIS um Daten zwischen nicht verschachtelten Controllern auszutauschen.
Eine sehr gute Anmerkung zu diesem Thema über die gemeinsame Nutzung von Daten ist, wie man Objekte deklariert. Ich hatte Pech, denn ich bin in eine AngularJS-Falle getappt, bevor ich darüber gelesen habe, und ich war sehr frustriert. Lassen Sie mich Ihnen also helfen, diesen Ärger zu vermeiden.
Ich lese aus dem "ng-book: The complete book on AngularJS", dass AngularJS ng-models, die in Controllern als bare-data erstellt werden, FALSCH sind!
Ein $scope-Element sollte wie folgt erstellt werden:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
Und nicht auf diese Weise:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Dies liegt daran, dass es empfohlen wird (BEST PRACTICE), dass das DOM (html-Dokument) die Aufrufe als
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Dies ist sehr hilfreich für verschachtelte Controller, wenn Sie möchten, dass Ihr untergeordneter Controller in der Lage ist, ein Objekt des übergeordneten Controllers zu ändern....
Aber in Ihrem Fall wollen Sie keine verschachtelten Bereiche, aber es gibt einen ähnlichen Aspekt, um Objekte von Diensten zu den Controllern zu bekommen.
Nehmen wir an, Sie haben Ihren Dienst "Factory" und im Rückgabebereich gibt es ein ObjektA, das ObjektB enthält, das ObjektC enthält.
Wenn Sie von Ihrem Controller das ObjektC in Ihren Bereich GET wollen, 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;
Im DOM können Sie dann objectC von objectA aus aufrufen. Dies ist eine bewährte Praxis im Zusammenhang mit Fabriken, und am wichtigsten, hilft es, unerwartete und nicht fangbare Fehler zu vermeiden.