【问题标题】:angularjs1.5+ component doesn't receive broadcast event ($on doesn't work)angularjs1.5+ 组件不接收广播事件($on 不起作用)
【发布时间】:2017-11-01 07:34:06
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

标签: angularjs angularjs-components angular-broadcast


【解决方案1】:

这里的问题是你broadcasting 事件,甚至在你的子控制器初始化并开始监听这些事件之前。因此,无论您使用 $scope 还是 $rootScopebroadcast 都没有关系 :)

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

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

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

working example

【讨论】:

  • @anoop np,很高兴它有点帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 2011-06-02
  • 2021-12-13
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多