したがって、私のコントローラーの構造が原因である可能性があります。ここに親コントローラーと子コントローラーが表示されますが、重要な部分は次のとおりです。
親コントローラー
//Load version
$scope.person = People.people.get({ id: $routeParams.id}, function(person) {
var associations = {
events: person.events || [],
people: person.people || [],
places: person.places || []
};
$scope.$broadcast('setAssociations', associations);
});
//Event version
$scope.$on('getAssociations', function(e, args) {
var associations = {
events: $scope.person.events || [],
people: $scope.person.people || [],
places: $scope.person.places || []
};
$scope.$broadcast('setAssociations', associations);
});
子コントローラー
$scope.$on('setAssociations', function(event, args) {
$scope.parentEvents = args.events;
});
$scope.$emit('getAssociations', {});
アイデアはevents
、親のperson
オブジェクトから子コントローラーまでを取得する必要があるということです。問題は、親から育てる各方法がsetAssociations
1 つのコンテキストでしか機能しないことです。
load
ページがアプリ内からナビゲートされた場合 (ハッシュ、ナビゲーション)、バージョンは機能します。ただし、リロードまたは外部からの移動 (全ロード) の場合、子イベントは発生しません。これはおそらく、リスナーがまだ登録されていないためです。
このevent
バージョンは、ページが更新された場合、またはアプリの外部からナビゲートされた場合 (ページが完全に読み込まれる原因となるもの) に機能します。に移動すると、$scope
は空ですが、このメソッドは失敗します。
そのため、アプリがコントローラーを読み込む順序は、「ディープリンク」または更新時と、内部ナビゲーションを実行するときで異なります。親子関係を持つ角度コントローラーから一貫した負荷動作を取得するにはどうすればよいですか?