这可能是我目前使用AngularJS时遇到的最棘手的问题。 我们的网站由不同的路线构成。每个路由都有自己的视图和控制器,还有一个名为MainCtrl的父控制器。 在我的index.html中,我导入了我拥有的所有控制器。在某些时候,我正在重新路由到另一个子路由(让我们用iframeCtrl作为控制器调用它/ iframe)然后,当我尝试将一个事件名称从MainCtrl向下调度到所有子节点时(广播的函数在IframeCtrl中),什么都没有发生(本地它很好,问题只出在生产中)。我不确定问题是,我改变路线之后,IframeCtrl的功能还没有加载,但是我在index.html加载它所以我认为这就够了,正如我所说,它确实有效本地。
这是MainCtrl的代码:
globalVariables.broadcastAnimateBar({stage : data.progress});
这是我工厂的应用程序代码
globalVariablesService.broadcastAnimateBar = function(stage)
{
$rootScope.$broadcast('animateBar',stage);
}
这是IframeCtrl中的代码
$scope.$on('animateBar', function(event,args){
.
.
.
})
任何想法如何去做?
谢谢你, 米拉
答案 0 :(得分:0)
我设法通过向广播添加超时来使其工作
$timeout(function(){
$rootScope.$broadcast('animateBar',stage);
}, 1000);