我有嵌套控制器,需要在控制器之间建立通信。我可以通过两种方式来实现这一点:
因此,我需要为每个层次级别提供单独的通信通道。不知道如何实现这一目标。我想过提供一个提供通信通道的服务,但是如何将它注入相关的控制器?
哪种解决方案更好,如何实施第二种解决方案更好?或者还有其他解决方案?
答案 0 :(得分:0)
如何在服务中创建地图,这将跟踪控制器之间可能的通信方式
因此,如果您注册Controller 1的示例范围,您可以保存父和子范围的ID并仅打开这些控制器的通信通道 - 您将发出特定ID为com的事件。通道,它只会影响那些涉及的控制器。
答案 1 :(得分:0)
对于方法2,选项是使用事件。
要将事件从父作用域向下发送到子/后代作用域,您可以使用$scope.$broadcast('myEvent', args)
并在子作用域中使用$scope.on('myEvent', function(event, args){...})
监听事件。
虽然似乎所有通信都是向下的,但如果子范围需要向上发送事件到父/祖先范围,则可以使用$scope.$emit
代替。
你可以查看这个问题:$scope.$emit and .$on angularJS关于如何使用$ emit(向上)和$ on。它类似于$ broadcast(向下)。
答案 2 :(得分:0)
您是否尝试将postaljs用作消息总线:http://jonathancreamer.com/an-angular-event-bus-with-postal-js/
您可以通过发布特定渠道的邮件来使用邮政,这样您就可以将邮件隔离到root,root.leve1,root.level2之类的东西,并使用通配符主题订阅它。 即:root *,root.level1,...