<div container="">
<div sender="">
<input type="text" ng-model="text" />
<button ng-click="submit()">Send</button>
</div>
<div receiver="">{{text}}</div>
<div activity-log="">
<ul>
<li data-ng-repeat="log in activities">
{{log.state}}
</li>
</ul>
</div>
</div>
从上面的 html 指令“sender”发出消息“1 send”到“container”。作为返回,它会广播它。指令“接收者”监听该广播并发出消息“2 ack”。 “container”也广播此消息。指令“activity-log”接收这两条消息。但它先接收“2 ack”,然后“1 send”,即使“容器”先广播“1 send”,然后“2 ack”。
这是为什么呢?是否可以确保它按正确的顺序接收。
这里是测试链接http://jsfiddle.net/wnsg9uzt/ 。比较控制台上的内容(容器接收到的事件)与屏幕上的内容(事件日志接收到的事件)。
最佳答案
如果将接收器 div 移到事件日志 div 下方,它似乎可以按要求工作。由于 $scopes 处于相同的层次结构级别,我猜测 Angular 会按 DOM 顺序处理它们。不过,使用 $rootScope 可能是一个更好的选择。
<div activity-log="">
<ul>
<li data-ng-repeat="log in activities">
{{log.state}}
</li>
</ul>
</div>
<div receiver="">{{text}}</div>
关于javascript - AngularJs "on"事件监听器接收到 "broadcast"乱序发送的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300942/