我的观点如下(为简洁起见):
<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>
是加载模板Url并拥有自己的控制器的角度指令。
上述视图的控制器是:
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() 一次,如果同一页面中指令的控制器更新数据,第一个控制器没有办法更新其数据。