参考:Parent/Child Controller Communication
ng的$scope采用继承机制,所以,childController中复制了parentController的所有属性和方法。并且,childController can override parentController's methods or properties. 所以,最简单的方式:子类通过$parent去修改父类的属性或方法。
坑 | 优势 |
子类与父类强耦合 | 简单+直接,操作方便 |
子类可能会错误的修改父类的状态 | 当子类只与一个父类强关联时,可以很方便的使用 |
子类难以被复用(因为与父类强耦合) |
2.PubSub
坑 | 优势 |
产生更多的事件引用 | 解除父子耦合(angular作为中间的消息传递者) |
无法保证事件处理器的先后顺序 | 支持One-to-many, many-to-many, many-to-one消息传递形式 |
会产生事件循环调用的潜在bug |
备注:I highly advise not to use $rootScope.$broadcast
+ $scope.$on
but rather $rootScope.$emit
+ $rootScope.$on
. The former can cause serious performance problems as raised by @numan. That is because the event will bubble down through all scopes.
4.Service
参考:What's the correct way to communicate between controllers in AngularJS?