从另一个控制器广播功能不起作用,但仅在生产中

时间:2015-07-21 08:20:37

标签: javascript angularjs angular-broadcast

这可能是我目前使用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){
.
.
.
})

任何想法如何去做?

谢谢你, 米拉

1 个答案:

答案 0 :(得分:0)

我设法通过向广播添加超时来使其工作

  $timeout(function(){
       $rootScope.$broadcast('animateBar',stage);
  }, 1000);