从另一个控制器广播功能不起作用,但仅在生产中
Broadcasting a function from another controller does not work, but only in production
这可能是我迄今为止遇到的最奇怪的问题 AngularJS。
我们的网站由不同的路线构成。每个路由都有它的视图和控制器,还有一个父控制器,叫做 MainCtrl。
在我的 index.html 中,我导入了我拥有的所有控制器。在某些时候,我正在重新路由到另一个子路由(让我们将其称为 /iframe,以 IframeCtrl 作为控制器)然后,当我尝试将事件名称从 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){
.
.
.
})
有什么想法吗?
谢谢,
米拉
我设法通过向广播添加超时来让它工作
$timeout(function(){
$rootScope.$broadcast('animateBar',stage);
}, 1000);
这可能是我迄今为止遇到的最奇怪的问题 AngularJS。 我们的网站由不同的路线构成。每个路由都有它的视图和控制器,还有一个父控制器,叫做 MainCtrl。 在我的 index.html 中,我导入了我拥有的所有控制器。在某些时候,我正在重新路由到另一个子路由(让我们将其称为 /iframe,以 IframeCtrl 作为控制器)然后,当我尝试将事件名称从 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){
.
.
.
})
有什么想法吗?
谢谢, 米拉
我设法通过向广播添加超时来让它工作
$timeout(function(){
$rootScope.$broadcast('animateBar',stage);
}, 1000);