---この回答はこの質問に対するものではないことはわかっていますが、この質問を読んで、工場などのサービスを処理して、問題の発生を回避したいと考えている人が欲しいです-----
このためには、サービスまたはファクトリを使用する必要があります。
サービスは、ネストされていないコントローラー間でデータを共有するためのベストプラクティスです。
データ共有に関するこのトピックに関する非常に優れた注釈は、オブジェクトを宣言する方法です。AngularJSの罠に陥ったので、読む前に私は不運でした。この問題を回避できるようにお手伝いさせてください。
「ng-book:AngularJSに関する完全な本」を読んだところ、ベアデータとしてコントローラーで作成されたAngularJS ng-modelsが間違っている!
$ 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ドキュメント)に次のように呼び出しを含めることが推奨されているため(BEST PRACTICE)
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
これは、子コントローラーが親コントローラーからオブジェクトを変更できるようにする場合に、ネストされたコントローラーにとって非常に役立ちます。
しかし、あなたの場合、ネストされたスコープは必要ありませんが、オブジェクトをサービスからコントローラーに取得するための同様の側面があります。
サービス「ファクトリー」があり、戻りスペースに、objectCを含むobjectBを含むobjectAがあるとします。
コントローラーからobjectCをスコープに取得したい場合、それは間違いです。
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
これは機能しません...
代わりにドットを1つだけ使用してください。
$scope.neededObjectInController = Factory.ObjectA;
次に、DOMで、objectAからobjectCを呼び出すことができます。これは、ファクトリに関連するベストプラクティスであり、最も重要なのは、予期しない、キャッチできないエラーを回避するのに役立ちます。