gpt4 book ai didi

javascript - 在 AngularJS 中加载子监听器后广播父事件

转载 作者:行者123 更新时间:2023-11-28 07:02:52 27 4
gpt4 key购买 nike

我有三个 Controller - Parent 和 Child1 以及 Child2。 Child1 和 Child2 是父 Controller 内的选项卡

<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 正在调用服务来获取一些数据,然后广播该事件。 child 监听该事件,获取数据并执行必要的操作。

但有时,当父事件广播时,我的子监听器未注册(因此子监听器将不起作用)。使用超时功能来延迟事件广播,但它会搞砸缓慢的互联网连接。有没有办法确保在注册我的子监听器后始终启动我的广播监听。以下是目前的代码

.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 所说的,在子 Controller 内的父值上添加 $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);
});
})

关于javascript - 在 AngularJS 中加载子监听器后广播父事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com