angularjs1.5+ 组件不接收广播事件($on 不起作用)

angularjs1.5+ component doesn't receive broadcast event ($on doesn't work)

我正在写一些代码并意识到 angularjs1.5+ 组件实际上并没有接收到 $scope.$broadcast 事件,这意味着 $scope.$on 从不 运行 在组件控制器函数中。

虽然我能够 $emit 来自组件控制器的事件并由 parent 控制器通过 $on 接收,但它只是不监听广播事件。

广播 来自parent:$scope.$broadcast('parentEvnt', [1,2,3]);

在组件中收到:$scope.$on('parentEvnt', function(event, data){ \

我创建这个 plunker 来说明这个问题。

搜索了一些文章以及 SO,但没有找到任何答案,并尝试 $rootScope.$broadcast 也没有帮助。

并且,如果不可能,那么从应用程序中的任何随机位置通知组件的最佳方式是什么?

这里的问题是您甚至在您的子控制器初始化并开始侦听这些事件之前就broadcast处理事件。因此,使用 $scope$rootScopebroadcast 并不重要 :)

例如,我将您的 broadcast 更改为在 2 秒内将其置于 $timeout 内,它会按预期工作。

$timeout(function() {
  $rootScope.$broadcast('parentEvnt', [1,2,3]);
}, 2000);

不过,理想情况下,您希望在单击按钮或其他一些情况下使用它。

working example