我正在编写一些代码,并意识到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
还是$rootScope
到broadcast
:(
例如,我更改了您的broadcast
,将其在$timeout
中使用2秒钟,它将按预期工作。
$timeout(function() {
$rootScope.$broadcast('parentEvnt', [1,2,3]);
}, 2000);
不过,理想情况下,您希望将其放在按钮或其他情况下。
工作示例