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

时间:2017-05-31 13:09:09

标签: angularjs angularjs-components angular-broadcast

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

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

来自父母的

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

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

我创建了此plunker来显示问题。

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

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

1 个答案:

答案 0 :(得分:2)

这里的问题是,即使在您的子控制器初始化并开始收听这些事件之前,您broadcast也是$scope。因此,使用$rootScopebroadcastbroadcast是不是无关紧要:))

例如,我将$timeout更改为$timeout(function() { $rootScope.$broadcast('parentEvnt', [1,2,3]); }, 2000); 内的2秒,它会按预期工作。

yourSlider.addTarget(self, action: #selector(sliderValueChanged), for: .valueChanged)

但是,理想情况下,您希望按下按钮或其他方案。

working example