在AngularJS中,在子监听器加载后广播父事件
Broadcast Parent Event after Child listener loads in AngularJS
我有三个控制器- Parent和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和没有找到一个合适的解决方案在线。请指导。提前感谢:)
也许最好的解决方案是@Vaibahv Shah所说的,在子控制器的父值上添加$scope.$watch
。
:
.controller('parent',function($scope,$timeout,someService,){
someService.then(function(fetchData){
$scope.fetchData = fetchData;
})
})
.controller('child1',function($scope){
//Some initializations
$scope.$watch('fetchData', function() {
//some work based on fetchData
console.log($scope.fetchData);
});
})
相关文章:
- 推送器:无法广播客户端事件
- AngularJS:在rootScope上广播/发出的事件多次发生
- 什么'是在AngularJS中处理应用程序状态和事件广播的最佳实践
- AngularJs-向单个控制器广播事件
- AngularJS:只将事件从父级广播给它的子级
- angular js,广播一个事件并等待它完成
- 如何将 AngularJS 事件重新广播到子范围
- 广播事件-工作良好的服务器端,但不是在客户端
- 事件广播到特定用户(套接字).Io, redis, node)
- 监听来自指令内控制器的广播事件
- 如何广播事件到一个元素从rootScope在聚合物
- 如何取消注册或销毁$广播事件
- 使用d3.在d3组件之间调度广播事件
- AngularJs 广播事件
- AngularJS 1.5中的组件不监听$scope中的广播事件
- 角度 - 没有 HTML 和广播事件的控制器
- 如何在JavaScript(或jQuery)中实现自定义广播事件
- AngularJS:如何避免-从app.js调用的广播事件被触发两次
- AngularJS - 在广播事件后更新指令的视图
- 监听angularjs以非angular的方式广播事件