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



我正在编写一些代码,并意识到AngularJS1.5 组件实际上未接收$scope.$broadcast事件,表示$scope.$on永远不会在Component Controller函数中运行。

尽管我能够从组件控制器中$emit并由$on的父控制器接收到该事件,但它只是不收听广播事件。

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

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

我创建了这个 plunker 显示问题。

搜索了一些文章,但也没有找到任何答案,并尝试使用$rootScope.$broadcast也无济于事。

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

这里的问题是,您甚至在孩子控制器初始化并开始聆听这些事件之前就进行了broadcast。因此,无论您使用$scope还是$rootScopebroadcast:(

都没关系

例如,我更改了您的broadcast,将其在$timeout中使用2秒钟,它将按预期工作。

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

不过,理想情况下,您希望将其放在按钮或其他情况下。

工作示例

最新更新