我有三个控制器——Parent and Child1 和 Child2。Child1 和 Child2 是父控制器内的选项卡
<div ng-controller="parent">
<!-- some HTML -->
<div ng-controller="child1"></div>
<div ng-controller="child2"></div>
<!-- Keeping the code minimal for tab. Otherwise its long code -->
</div>
父控制器正在调用该服务以获取一些数据,然后广播该事件。孩子监听那个事件,获取数据并执行必要的事情。
但是有时当父事件得到广播时,我的子监听器没有注册(所以子监听器将不起作用)。使用超时功能来延迟事件广播,但它会在缓慢的互联网连接上搞砸。有没有办法确保在我的孩子听众注册后我的广播收听总是被启动。以下是截至目前的以下代码
.controller('parent',function($scope,$timeout,someService,){
someService.then(function(fetchData){
$timeout(function () {
$scope.$broadcast('someEvent',fetchData);
},300);
})
})
.controller('child1',function($scope){
//Some initializations
$scope.$on('someEvent', function(event, fetchData) {
//some work based on fetchData
});
})
我是 angularJS 的新手,在网上找不到合适的解决方案。请指导。提前致谢 :)