我有一个 AngularJS 应用程序,其中视图将$broadcast
发生“上下文更改”事件,以告知其子级(ng-include
带有控制器和指令的 s,都带有它们的子范围)父视图中发生的事情。现在我正在使用ui-router重构它,这样就会有一个父状态(非抽象)和子状态。
父级仍然很高兴地$broadcast
处理它的“上下文改变”事件,但子状态永远不会得到它们。这并不完全让我感到惊讶,因为ui-router没有继承范围,但这对我来说仍然是一个问题。对于国家之间的这种沟通,什么是好的模式?我们可以利用我试图连接的州之间存在现有父子关系的事实吗?我可以使用服务,那么服务$broadcast
事件如何(作为$broadcast
范围方法并且服务没有特定范围)。
我试过打电话$rootScope.$broadcast
(而不是$scope.$broadcast
)无济于事。我只是不确定这是否$rootScope
是一个共享范围,或者我实际上期望它只是一个通用定义(如类继承)。
我开始更好地理解调用的后果$rootScope.$broadcast
。它将通知世界。我进行了一些检查event.targetScope
(可能是为了确保控制器不会通知自己)。现在我删除了检查我收到的消息,但不幸的是它们太多(来自层次结构中完全不同位置的控制器)。我只希望父母通知它的孩子。当我使用它时ng-include
,这意味着父范围与子范围。现在我正在使用ui-router我希望它可以与父状态(控制器)和子状态(控制器)一起使用,但我不知道该怎么做。