Javascript 角度$scope.$on不工作

Javascript 角度$scope.$on不工作,javascript,angularjs,Javascript,Angularjs,我被这个弄得头晕目眩。我的控制器结构是顶部的appController,然后是mapController。所有其他控制器都是嵌套的,并且彼此平行。它们正在通过ui路由器ui视图状态更改进行实例化 $scope.$on('selectedIdsForExport', function (event, selectedIds) { 在我的地图控制器中,我有一个函数 $scope.$broadcast('selectedIdsForExport', selectedIds); 这很有效。$on函数

我被这个弄得头晕目眩。我的控制器结构是顶部的appController,然后是mapController。所有其他控制器都是嵌套的,并且彼此平行。它们正在通过ui路由器ui视图状态更改进行实例化

$scope.$on('selectedIdsForExport', function (event, selectedIds) {
在我的地图控制器中,我有一个函数

$scope.$broadcast('selectedIdsForExport', selectedIds);
这很有效。$on函数位于刚刚通过状态更改实例化的chartController中

$scope.$on('selectedIdsForExport', function (event, selectedIds) {
这是从广播中播出的。但它没有进入功能。它跳过它。这就是我迷路的地方。我确实在$watch函数中有这个$on函数,我认为这可能是一个问题,但如果它是一个问题,$on函数不会被击中?我错了吗

我怎样才能解决这个问题

请注意,在我的mapController中,我有两个函数,它们都具有相同的$broadcast函数。这不应该是一个问题吗?我还使用了两个具有相同$on函数的ChartController。但如果这是一个问题,断点将无法捕捉到我尝试输入的$on函数。对吗? 下面是一些可能会有所帮助的截图。在我的页面加载/刷新中,这是模式。这是正确的

当我单击选项卡切换图表时,这就是模式。


这就是它跳过$on函数的地方

我认为这是调用它们$on和$broadcast的父级和子级优先级的问题

请阅读以下问题


你能贴一张提琴或一张纸条来说明这个问题吗?从纯代码质量的角度来看,我也会从$watch中删除$on。为什么要将侦听器包含在$watcher中?他是怎么说的。每次您的值发生变化时,您都会一次又一次地生成同一个侦听器。内存泄漏。为什么不包括相关的代码和控制器层次结构,而不是试图用文字解释?为什么我们需要梳理出“控制器嵌套且并行”或“从广播中命中。但它不进入函数。它跳过它”这两个明显矛盾的语句的真正含义?我被交给了这个项目。这不是最好的设置方式。但我需要让它保持原样。