好久没写博客了,从今天开始恢复更新!angular中两个同级之间进行通信,很常见的一种方式就是使用$emit,$broadcast,$on进行event,data通信。但是它有些限制,下面就来介绍详细用法和我遇到的一些坑。
首先介绍一下我一开始使用时遇到的坑
|
|
1,childCtrl1可以触发ageChange事件并向父级传递。
2,父级parentCtrl也可以监听到ageChange事件,然后向子级广播ageChangeA事件(现在问题来了)。
3,childCtrl2不能够监听到ageChangeA事件(这是为什么呢?)。
-> 收到childCtrl1冒泡过来的数据 Object {name: “ageChange”, targetScope: a, defaultPrevented: false, currentScope: g}
正确使用并填坑
|
|
对比上面两段代码细心的人应该已经发现了问题的所在。
$emit,$broadcast其中一个必须要有事件触发,否则子级中的$on将不能识别该事件。
-> 收到childCtrl1冒泡过来的数据 Object {name: “ageChange”, targetScope: a, defaultPrevented: false, currentScope: g}
-> 收到parentCtrl广播过来的数据 Object {name: “ageChangeA”, targetScope: g, defaultPrevented: false, currentScope: a}