gpt4 book ai didi

angularjs - Controller 未收到 $broadcast 事件

转载 作者:行者123 更新时间:2023-12-04 10:24:58 26 4
gpt4 key购买 nike

所以我有一个 angularjs 应用程序,其中包含多个局部 View ,每个局部 View 有一个 Controller 。我还有一个服务,它将从 $rootScope 中 $broadcast 事件:

$rootScope.$broadcast('MyEvent', 'message');

目前只有一个 Controller 监听事件,我注意到如果我不在与该 Controller 关联的 View 上(通过路由),则该 Controller 永远不会收到该事件,因此永远不会加载与其关联的 View .无论哪个 View 处于事件状态,如何确保 Controller 接收事件广播?我尝试使用 $scope.$on('MyEvent') ... 和 $rootScope.$on('MyEvent') ...在我的 Controller 中;两者似乎都不起作用。

最佳答案

这是预期的行为,因为您的部分 View 具有与其关联的单独 Controller 。只有在呈现 View 时 Controller 才会在范围内。 Controller 仅在您的 ng-controller 时才进入范围。指令在您的部分 View 中解析。因此,只有在加载与其关联的 View 后,您的 Controller 才会在范围内。

在您的情况下,当您广播事件时 myEvent使用 $rootScope.$broadcast('MyEvent', 'message');您想要接收此事件的 Controller 不在范围内。

要清楚地看到这一点,请在您的 broadcast 上设置断点步进并暂停执行以检查 angular.element('[ng-controller=urControllerName]').scope() 的值在控制台中,您可以看到它是未定义的,这意味着 Controller 尚未在范围内。

关于angularjs - Controller 未收到 $broadcast 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com