我需要在调用$ 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更新到正确的页面之前发生。
答案 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)