私は次のように見ています(簡潔にするために短縮されています):
<ul class="nav nav-tabs nav-stacked">
<li ng-repeat="i in range">
<a id="list{{i}}" ng-click="ShowList(i)">
List Item {{i}}
</a>
</li>
</ul>
<ng-switch on="listItemType">
<div ng-switch-when="1">
<form-a></form-a>
</div>
<div ng-switch-when="2">
<form-b></form-b>
</div>
<div ng-switch-when="3">
<form-c></form-c>
</div>
</ng-switch>
<form-a>, <form-b>, <form-c>
templateUrlをロードし、独自のコントローラーを持つ角度ディレクティブです。
上記のビューのコントローラーは次のとおりです。
var listCount;
var listIds = [];
$http.get('/api/lists').
success(function(data) {
$scope.lists = data.lists;
for (listCount = 1; listCount <= $scope.lists.length; listCount++) {
listIds.push(listCount);
}
$scope.range = listIds;
});
$scope.ShowList = function(listNumber) {
$scope.listItemType = $scope.lists[listNumber - 1].listType;
};
ご覧のとおり、このコントローラーは$ http.get()を使用して一部のデータをフェッチします。
さて、コントローラーは<form-a>
いくつかのデータを投稿します。これにより、上記のコントローラーがフェッチしたのと同じデータが更新されます。<li>
つまり、ビューの先頭にあるタグに新しいエントリが必要です。
ただし、ページのコントローラーはすでに$ http.get()リクエストを実行しています。最初のコントローラーのリスト情報が更新されるように、データを再度取得するように依頼するにはどうすればよいですか?つまり、データが変更された場合、最初のコントローラーに、データを再度$ http.get()するために使用できるイベントハンドラーがありますか?
ページが更新または再ロードされないため、上記のコードを使用したコントローラーは$ http.get()を1回だけ呼び出し、同じページのディレクティブのコントローラーがデータを更新する場合、最初のコントローラーがそのデータを更新します。