【发布时间】:2014-07-28 15:38:11
【问题描述】:
所以我有一个 angularjs 应用程序,它有几个局部视图,每个局部视图一个控制器。我还有一项服务,它会从 $rootScope 中播放 $broadcast 事件:
$rootScope.$broadcast('MyEvent', 'message');
目前只有一个控制器在监听事件,我注意到如果我不在与那个控制器关联的视图上(通过路由),那么该控制器永远不会收到事件,因此永远不会加载视图与之相关联。无论哪个视图处于活动状态,如何确保控制器接收到事件广播?我尝试在我的控制器中使用 $scope.$on('MyEvent')... 和 $rootScope.$on('MyEvent')... ;似乎都不起作用。
【问题讨论】:
-
你能提供一个小提琴或plunker吗?
-
显然,当您不在带有控制器的视图上时,它不会收到事件,因为控制器和侦听器都不存在,但如果您已经有服务,您可以将其注入控制器并制作使用双向数据绑定,即当控制器初始化和服务注入检查值时服务并做某事
-
AFAIK,根据 ngRoute 的设计,控制器将在用户进入关联视图时创建。当用户离开时,控制器将被销毁。
标签: angularjs events global broadcast