我有两个控制器可以在不同的视图中同时显示。
我需要更新视图B中的视图A
例如
当我在查看get-by-id页面时发送POST,当我观看视图A(项目列表)时,我想要更新该单个帖子。我可以强制控制器再次获取信息并更新范围或。
有什么想法?
答案 0 :(得分:1)
我会使用事件。 POST成功后,从控制器B发送事件
$rootScope.$broadcast('myEvent', data)
并在控制器A上添加一个监听器
$scope.$on('myEvent', function(event){
// update view A
}
答案 1 :(得分:1)
在A的POST回调中,发送一个包含更新列表的事件,如下所示:
$scope.$emit('listUpdateEvent',$scope.list);
在B的控制器内有这个听取更新:
$rootScope.$on('listUpdateEvent',function(e,_list) {
$scope.list = _list;
});
答案 2 :(得分:1)
您可以使用$ broadcast在兄弟范围之间进行通信。
如果您有一个主范围和两个子范围(一个用于视图A,一个用于视图B),您可以从主范围进行广播以通知孩子发生了某些事情,然后在范围A中您听特别广播。
示例:
主范围
| - 范围A
| - 范围B
$ $父广播("事件&#34)。
这将从主范围发出一个广播,可以在A控制器中拦截:
$ scope。$ on(" event",function())
在那里你的function()将更新你的A范围。