POST成功后更新不同的控制器

时间:2014-03-12 15:36:15

标签: javascript angularjs angular-ui-router

我有两个控制器可以在不同的视图中同时显示。

我需要更新视图B中的视图A

例如

当我在查看get-by-id页面时发送POST,当我观看视图A(项目列表)时,我想要更新该单个帖子。我可以强制控制器再次获取信息并更新范围或。

有什么想法?

3 个答案:

答案 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

在B控制器中,当您的envent发生时,您可以使用:

  

$ $父广播("事件&#34)。

这将从主范围发出一个广播,可以在A控制器中拦截:

  

$ scope。$ on(" event",function())

在那里你的function()将更新你的A范围。

Angular doc for broadcast