AngularJS在$ scope.emit之后执行操作

时间:2016-04-19 08:28:27

标签: javascript angularjs

我需要在调用$ scope.emit(...)完成处理后执行操作(即所有处理程序/侦听器都已完成),我该怎么做?

                    $scope.$emit("nsError:setPage", { page: page, ele: ele });// tell page directive to set the current page so that the errored item is visible
                    alert('here');

目前,警报在UI更新到正确的页面之前发生。

2 个答案:

答案 0 :(得分:1)

' $scope.$emit已完成'与用户更新了'不是一回事。对于要更新的​​UI,必须完成摘要周期。您可以通过使用角度$timeout函数(不要忘记将其注入控制器)来等待这种情况发生:

$timeout(function(){alert('here');});

答案 1 :(得分:0)

如果你发出一个事件:

 $scope.$emit("nsError:setPage", { page: page, ele: ele })

然后你可以听听它:

$scope.$on('nsError:setPage', function(event, mass) { alert('here'); });

请注意,$emit通过范围层次结构向上调度事件,$broadcast向下调度到您的子范围。

官方doc中的更多信息(滚动到$ on)